PHP如何?計數排序的代碼

來源:互聯網
上載者:User
這篇文章給大家介紹的內容是關於PHP如何?計數排序的代碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

/** * 計數排序: 桶排序的一種 */$arr = [5,69,4,32,14,8,74,95,23,56,41,5,31,63];// include 'data.php';$length = count($arr);$maxValue = $arr[0];// 找出數組中的最大值for ($i=1; $i < $length; $i++) {    if ($arr[$i] > $maxValue) {        $maxValue = $arr[$i];    }}/** * 定長數組, 鍵會自動排序, PHP數組是hash表的實現, * 如果這裡用普通的數組, 鍵不會自動排序, 不存在的鍵也不會自動填滿null */$frequency = new SplFixedArray($maxValue + 1);/** * 統計arr中, 值出現的頻次 */for ($i=0; $i < $length; $i++) {    if(empty($frequency[$arr[$i]]))        $frequency[$arr[$i]] = 0;    $frequency[$arr[$i]] += 1;}// 清空$arr$arr = [];// 遍曆frequency, 如果其元素有值, 那麼將鍵push到arr中for ($i=0; $i < count($frequency); $i++) {    if (!empty($frequency[$i])) {        for ($j=0; $j < $frequency[$i]; $j++) {            $arr[] = $i;        }    }}print_r($arr);
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.