PHP实现希尔排序
希尔排序是在插入排序的基础上改进的版本,效率更高一点。
它是以一个增量来组成序列进行排序的。直接上代码
function shellSort($arr) {
$len = count($arr);
$count = $len; //数组长度
do {
$len = intval($len /3) + 1;//以3为增量,具体计算方法 2^t-k+1 -1 (0<=k<=t<=log(n+1)), log以2为底
for($i=$len; $i<$count; $i++) { //
if($arr[$i] < $arr[$i-$len]) { 增量序列比较
$temp = $arr[$i]; //临时存放小值
for($j=$i-$len; $j>=0&&$temp<$arr[$j]; $j-=$len) { //这个循环主要是交换值
$arr[$j+$len] = $arr[$j];
}
$arr[$j+$len] = $temp;
}
}
} while($len > 1);
return $arr;
}