![这里写图片描述](https://img-blog.csdn.net/20160407194725355)
1.直接插入排序代码实现:
<?php
header("content-type:text/html;charset=utf-8");
$arr =array(6,18,2,4,16,8);
echo "<br>排序前:<br>";
print_r($arr);
insertSort($arr);
echo "<br>排序后:<br>";
print_r($arr);
function insertSort(&$arr)
{
$len = count($arr);
for($i = 1;$i < $len; $i++)
{
$insertData = $arr[$i];
$pos = $i;
for($j = $i - 1;$j >= 0;$j--)
{
if($arr[$j] > $insertData)
{
$arr[$j+1] = $arr[$j];
$pos--;
}
else
{
break;
}
}
$arr[$pos] = $insertData;
echo "<br>第{$i}趟排序结果:";
print_r($arr);
}
}
2.二分查找插入排序代码实现
<?php
header("content-type:text/html;charset=utf-8");
$arr =array(6,18,2,4,16,8);
echo "<br>排序前:<br>";
print_r($arr);
bsInsertSort($arr);
echo "<br>排序后:<br>";
print_r($arr);
function bsInsertSort(&$arr)
{
$len = count($arr);
for($i = 1;$i < $len; $i++)
{
$left = 0;
$right = $i -1;
$mid = 0;
$insertData = $arr[$i];
while($left<=$right)
{
$mid = ($left + $right)/2;
if($insertData > $arr[$mid])
{
$left = $mid + 1;
}else
{
$right = $mid -1;
}
}
for($j=$i-1;$j>=$left;$j--)
{
$arr[$j+1] = $arr[$j];
}
$arr[$left] = $insertData;
}
}