思路分析:核心就是区分出已经排序好的,和没有排序的,以第一个元素为有序部分,从第二个元素开始,循环与有序部分对比,插入到有序位置,形成新的有序部分,外层$i控制轮数,循环将无序部分的元素挨个与有序元素部分进行对比插入,
$arr = array(9,3,4,1,7,10,8,2,5,6);
function insert_sort($array){
$len=count($array);
if($len<=0){
echo '数组不能为空';
return;
}
for($i=1;$i<=$len-1;$i++){
- //外层循环控制轮数,获取当前要对比的元素,在内层,将该元素与有序部分循环对比,并插入
$temp = $array[$i];
for($j=$i-1;$j>=0;$j--){
if($temp<$array[$j]){
$array[$j+1] = $array[$j];
}else{
break;
}
}
$array[$j+1] = $temp;
}
return $array;
}
echo "<pre>";
print_r(insert_sort($arr));
echo "</pre>";