插入排序其实和希尔排序一模一样 , 记得希尔排序中开始定义了一个 $d ( 分成 $l/$d 组 ) 吗 ? 插入排序只需要将那个 $d 改为 1 就可以 , 意思就是 , 不分组 , 只有一组 .
代码 :
function insertSort($a) { $l = count($a); for($i=1; $i<$l; $i++) { $t = $a[$i]; $j = $i-1; while($j>=0 && $a[$j]>$t) { $a[$j+1] = $a[$j]; $j--; } $a[$j+1] = $t; } return $a; }
用法:
echo(implode(",", insertSort($a)));// $a 为一个无序数组 , 例如 $a = range(1,100);shuffle($a);
额 , 和希尔排序对着看看 ? 是不是仅仅是把它那个 $d = floor($l/2); 改为 $d=1 而已 ?
时间: 2024-11-05 22:58:28