//插入排序
function insert_sort($arr) {
//获取数组单元个数
$count = count($arr);
if($count <= 1){
return $arr;
}
//外层循环用于从未排序区域中取出待排序元素
for ($i=1; $i < $count; $i++) {
//获取当前需要插入已排序区域的元素值
$temp = $arr[$i];
//内层循环用于从已排序区域寻找待排序元素的插入位置
for ($j=$i-1; $j >= 0; $j--) {
//如果$arr[$i]比已排序区域的$arr[$j]小,就后移$arr[$j]
if ($temp < $arr[$j]) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
} else {
//如果$arr[$i]不小于$arr[$j],则对已排序区无需再排序
break;
}
}
}
return $arr;
}
$arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
var_dump(insert_sort($arr));
「 插入排序 」在众多排序算法中效率较低
时间复杂度为: O(n²)
空间复杂度为 O ( 1 )
原理:
每次都是将元素 「插入」 到 有序 序列中