亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

php計(jì)數(shù)排序算法的實(shí)現(xiàn)(代碼示例)

來源:藏色散人 發(fā)布時(shí)間:2019-03-11 11:21:58 閱讀量:829

計(jì)數(shù)排序(Counting sort)是一種根據(jù)小整數(shù)鍵對一組對象排序的算法;也就是說,它是一個(gè)整數(shù)排序算法。它通過計(jì)算具有不同鍵值的對象的數(shù)量,并對這些數(shù)量使用算術(shù)來確定輸出序列中每個(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 來將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)代碼示例如下:

1234567891011121314151617181920212223242526 <?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; 

輸出:


12 原始數(shù)組 : 3, 0, 2, 5, -1, 4, 1 排序后數(shù)組 :-1, 0, 1, 2, 3, 4, 5 

相關(guān)推薦:《PHP教程》


標(biāo)簽: PHP
分享:
評(píng)論:
你還沒有登錄,請先