首頁  >  文章  >  後端開發  >  PHP梳排序(Comb Sort)演算法的實現

PHP梳排序(Comb Sort)演算法的實現

藏色散人
藏色散人原創
2019-03-09 10:08:212951瀏覽

梳子排序或梳排序是冒泡排序的變體。與希爾(Shell)排序類似,梳排序(Comb Sort)增加了比較和交換中使用的差距。有些實作是在間隔小於一定數量時使用插入排序。基本的想法是消除清單末尾附近的小值,因為在冒泡排序中,這些會大大減慢排序速度。而列表開頭的大值不會在冒泡排序中造成問題。

PHP梳排序(Comb Sort)演算法的實現

在冒泡排序中,當比較任何兩個元素時,它們總是具有1的間隙。梳排序的基本想法是間隙可以遠大於1。

PHP梳排序示意圖如下:

PHP梳排序(Comb Sort)演算法的實現

#程式碼範例如下:

<?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(&#39;, &#39;,$test_array );
echo "\n排序后数组\n:";
echo implode(&#39;, &#39;,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn