插入排序是一种最简单的排序方法。适用于已经有部分数据已经排好,并且排好的部分越大越好。一般在输入规模大于1000的场合不建议使用插入排序。
思路:
1、从第一个元素开始,该元素被默认有序;
2、取出下一个元素,在已排序的元素中从后向前扫描;
3、如果该元素(已排序)大于新元素,将该元素移至下一位置,直到找到已排序的元素小于或等于新元素的位置,将新元素插入到该位置后;
4、重复2-3。
<?php
function insert_sort($arr)
{
$len = count($arr);
for($i=0;$i<$len-1;$i++){
$cur = $arr[$i+1];
$pre_index = $i;
while($pre_index>=0 && $cur <$arr[$pre_index]){
$arr[$pre_index+1] = $arr[$pre_index];
$pre_index --;
}
$arr[$pre_index+1] = $cur;
}
return $arr;
}
$arr = array(2,13,42,34,56,23,67,365,87665,54,68,3);
print_r(insert_sort($arr));
?>