php如何實(shí)現(xiàn)計(jì)數(shù)排序算法?針對(duì)這個(gè)問(wèn)題,今天小編總結(jié)這篇有關(guān)計(jì)數(shù)排序算法的文章,希望幫助更多想學(xué)習(xí)php的同學(xué)找到更加簡(jiǎn)單易行的辦法。
計(jì)數(shù)排序(Counting sort)是一種根據(jù)小整數(shù)鍵對(duì)一組對(duì)象排序的算法;也就是說(shuō),它是一個(gè)整數(shù)排序算法。它通過(guò)計(jì)算具有不同鍵值的對(duì)象的數(shù)量,并對(duì)這些數(shù)量使用算術(shù)來(lái)確定輸出序列中每個(gè)鍵值的位置。
計(jì)數(shù)排序只適合使用在鍵的變化不大于元素總數(shù)的情況下。它通常用作另一種排序算法(基數(shù)排序)的子程序,這樣可以有效地處理更大的鍵。
總之,計(jì)數(shù)排序是一種穩(wěn)定的線性時(shí)間排序算法。計(jì)數(shù)排序使用一個(gè)額外的數(shù)組C ,其中第i個(gè)元素是待排序數(shù)組 A中值等于 i的元素的個(gè)數(shù)。然后根據(jù)數(shù)組C 來(lái)將A中的元素排到正確的位置。
通常計(jì)數(shù)排序算法的實(shí)現(xiàn)步驟思路是:
1.找出待排序的數(shù)組中大和最小的元素;
2.統(tǒng)計(jì)數(shù)組中每個(gè)值為i的元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項(xiàng);
3.對(duì)所有的計(jì)數(shù)累加(從C中的第一個(gè)元素開(kāi)始,每一項(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)代碼示例如下:
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
看完上述內(nèi)容,你們掌握php實(shí)現(xiàn)計(jì)數(shù)排序算法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!