希爾排序
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);
類插入排序,不是真正的插入排序。指針