梳子排序或梳排序是冒泡排序的變體。與希爾(Shell)排序類似,梳排序(Comb Sort)增加了比較和交換中使用的差距。有些實作是在間隔小於一定數量時使用插入排序。基本的想法是消除清單末尾附近的小值,因為在冒泡排序中,這些會大大減慢排序速度。而列表開頭的大值不會在冒泡排序中造成問題。
在冒泡排序中,當比較任何兩個元素時,它們總是具有1的間隙。梳排序的基本想法是間隙可以遠大於1。
PHP梳排序示意圖如下:
#程式碼範例如下:
<?php function combSort($my_array){ $gap = count($my_array); $swap = true; while ($gap > 1 || $swap){ if($gap > 1) $gap /= 1.25; $swap = false; $i = 0; while($i+$gap < count($my_array)){ if($my_array[$i] > $my_array[$i+$gap]){ list($my_array[$i], $my_array[$i+$gap]) = array($my_array[$i+$gap],$my_array[$i]); $swap = true; } $i++; } } return $my_array; } $test_array = array(3, 0, 2, 5, -1, 4, 1); echo "原始数组 :\n"; echo implode(', ',$test_array ); echo "\n排序后数组\n:"; echo implode(', ',combSort($test_array)). PHP_EOL;
輸出:
原始数组 : 3, 0, 2, 5, -1, 4, 1 排序后数组 :-1, 0, 1, 2, 3, 4, 5
這篇文章就是關於PHP梳排序(Comb Sort)演算法的實作方法介紹,希望對需要的朋友有幫助!
以上是PHP梳排序(Comb Sort)演算法的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!