希尔排序
希尔排序是一种比较稳定的排序算法
第一层 是步长的循环,是指数级
第二层 是第一层步长到最后元素的指针的循环。
第三层 是第二层减去步长为起始,有步长的类插入排序。
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);
类插入排序,不是真正的插入排序。
转载于:https://blog.51cto.com/rhino/1905681