php实现的插入排序法
目录
插入排序法
思路
将数组分成两个区域:已排序区域和未排序区域。
首先假设数组的第一个元素处于已排序区域,
第一个元素之后的所有元素都处于未排序区域。
排序时用到两层循环:
第一层循环用于从未排序区域中取出待排序元素,并逐步缩小未排序区域;
第二层循环用于从已排序区域中寻找插入位置。
即不断地从已排序区域中寻找比待排序元素大的元素,然后将较大的已排序区的元素后移,
后移的最终结果是已排序区元素的最后一个元素占据待排序元素原来的位置,
而已排序区中间空出一个位置;最后将待排序元素插入元素后移后留下的空位。
示例
插入排序法的方法示例,代码如下:
header('content-type:text/html;charset=utf8 ');
function insert_sort($arr) {
for($i=1, $len=count($arr); $i<$len; $i++) {
$tmp = $arr[$i];
for($j=$i-1;$j>=0;$j--) {
if($tmp < $arr[$j]) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
} else {
break;
}
}
}
return $arr;
}
$arr=array(50,2,45,42,6,47,23,22,15,11,30,16,13,3);
//调用排序方法
echo "<pre>";
print_r(insert_sort($arr));
打印结果
Array
(
[0] => 2
[1] => 3
[2] => 6
[3] => 11
[4] => 13
[5] => 15
[6] => 16
[7] => 22
[8] => 23
[9] => 30
[10] => 42
[11] => 45
[12] => 47
[13] => 50
)
总结
php实现的插入排序法