有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。
/**
* 插入排序
* 原理: 假设左边数组为有序的,插入新元素,继续保持其有序;
* 以数组每二个元素为新元素开始,与左边元素循环对比,插入对应的位置,此时左边为一个有序的,
* 再以三个元素为新元素插入左边有序数组中,以此类推
*/
function insertSort($arr){
$c = count($arr);
for($i = 0; $i < $c-1;$i++){
for ($j=$i+1;$j>0;$j--) {
if($arr[$j-1] > $arr[$j]){
//交换位置
list($arr[$j],$arr[$j-1]) = [$arr[$j-1],$arr[$j]];
}
}
}
return $arr;
}