思路: 先将整个待排元素序列切割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序
复杂度: O(n3/2)
function shellSort($num){
$n = count($num);
while($n >= 1){
for($i = 1; $i < $n; $i++){
$j = $i - 1;
$temp = $num[$i];
while($j >= 0 && $temp < $num[$j]){
$num[$j + 1] = $num[$j];
$j--;
}
$num[$j + 1] = $temp;
}
$n = intval($n / 2);
}
return $num;
}