希尔排序

shellSort($a);
        dump($data);
        echo "
"; dump(array_reverse($data)); } function shellSort($a) { $l = count($a); //count 为 5 $d = floor($l/2);//floor() 函数向下舍入为最接近的整数 舍去小数部分取整 即为2 while($d>=1) { //$d >= 1 for($i=$d; $i<$l; $i++) { //$i为2、$i为3 $t = $a[$i];//$a[$i]=$a[2]=8、$a[$i]=$a[3]=4 $j = $i-$d;// 获取组内上一个数据 ,然后不断往前与当前数据比较、$j=1 while($j>=0 && $a[$j]>$t){ //修改$a[$j]>$t 为 $a[$j]<$t 即可倒序 //或者使用array_reverse倒序 $a[$j+$d] = $a[$j]; $j -= $d; } $a[$j+$d] = $t;//$a[0+2]=$a[2]=8 } $d = floor($d/2); } return $a; } }

你可能感兴趣的:(希尔排序)