希爾排序

希爾排序
php

希爾排序是一種比較穩定的排序算法算法

第一層 是步長的循環,是指數級shell

第二層 是第一層步長到最後元素的指針的循環。ide

第三層 是第二層減去步長爲起始,有步長的類插入排序spa

function shell_sort(&$arr)
{
    if(!is_array($arr))return;
    $n=count($arr);
    $sum = 0;
    for($gap=floor($n/2);$gap>0;$gap=floor($gap/=2))
    {
        for($i=$gap;$i<$n;++$i)
        {
            for($j=$i-$gap;$j>=0&&$arr[$j+$gap]<$arr[$j];$j-=$gap)
            {
                $temp=$arr[$j];
                $arr[$j]=$arr[$j+$gap];
                $arr[$j+$gap]=$temp;
            }
        }
    }
}
$arr = [6,5,4,3,2,1];
shell_sort($arr);
var_dump($arr);

類插入排序,不是真正的插入排序。指針

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息