希尔排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序相关的知识,希望对你有一定的参考价值。

希尔排序

希尔排序是一种比较稳定的排序算法

第一层 是步长的循环,是指数级

第二层 是第一层步长到最后元素的指针的循环。

第三层 是第二层减去步长为起始,有步长的类插入排序

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);

类插入排序,不是真正的插入排序。

以上是关于希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序