計(jì)數(shù)排序只適合使用在鍵的變化不大于元素總數(shù)的情況下。它通常用作另一種排序算法(基數(shù)排序)的子程序,這樣可以有效地處理更大的鍵。
總之,計(jì)數(shù)排序是一種穩(wěn)定的線性時(shí)間排序算法。計(jì)數(shù)排序使用一個(gè)額外的數(shù)組C ,其中第i個(gè)元素是待排序數(shù)組 A中值等于 i的元素的個(gè)數(shù)。然后根據(jù)數(shù)組C 來將A中的元素排到正確的位置。
通常計(jì)數(shù)排序算法的實(shí)現(xiàn)步驟思路是:
1.找出待排序的數(shù)組中最大和最小的元素;
2.統(tǒng)計(jì)數(shù)組中每個(gè)值為i的元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項(xiàng);
3.對所有的計(jì)數(shù)累加(從C中的第一個(gè)元素開始,每一項(xiàng)和前一項(xiàng)相加);
4.反向填充目標(biāo)數(shù)組:將每個(gè)元素i放在新數(shù)組的第C[i]項(xiàng),每放一個(gè)元素就將C[i]減去1。
PHP計(jì)數(shù)排序算法的實(shí)現(xiàn)代碼示例如下:
?phpfunction counting_sort($my_array, $min, $max) $count = array(); for($i = $min; $i = $max; $i++) $count[$i] = 0; foreach($my_array as $number) $count[$number]++; $z = 0; for($i = $min; $i = $max; $i++) { while( $count[$i]-- 0 ) { $my_array[$z++] = $i; return $my_array;$test_array = array(3, 0, 2, 5, -1, 4, 1);echo 原始數(shù)組 :/n echo implode( , ,$test_array );echo /n排序后數(shù)組/n: echo implode( , ,counting_sort($test_array, -1, 5)). PHP_EOL;
輸出:
原始數(shù)組 : 3, 0, 2, 5, -1, 4, 1 排序后數(shù)組 :-1, 0, 1, 2, 3, 4, 5
相關(guān)推薦:《PHP教程》
本篇文章就是關(guān)于php計(jì)數(shù)排序算法的實(shí)現(xiàn)方法介紹,希望對需要的朋友有所幫助!
以上就是php計(jì)數(shù)排序算法的實(shí)現(xiàn)(代碼示例)的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選