折半插入排序及PHP实现

直接插入排序算法是利用有序表的插入操作来实现对数据集合的排序。在进行第p+1趟的插入排序时,需要在前面的有序序列data[0],data[1],...,data[p]中找到
data[p+1]的对应的位置i,同时将data[i],data[i+1],....,data[p]都向后移动一个位置。由于有序序列式排好序的,故可以用折半查找(二分法)
操作来确定data[p+1]对应的位置i,这就是折半插入算法的思想。
PHP代码实现:
  function BinaryInsertSort(&$arr)
{
 for($i=1;$i
  {BinaryInsert($arr,$i);
 }
}
function BinaryInsert(&$arr,$p)
{
 $left = 0;$right=$p-1;
 $temp = $arr[$p];
 while($left<=$right)
  {
  $mid = intval(($left+$right)/2);
  if($arr[$mid]>$temp){$right=$mid-1;
 } else {
  $left=$mid+1;
 }}
 for($j=$p-1;$j>=$left;$j--)
  {$arr[$j+1]=$arr[$j];}
 $arr[$left]=$temp;
} 
 

你可能感兴趣的:(数据结构)