1. 程式人生 > >折半排序(插入排序)

折半排序(插入排序)

 折半排序(binary insert sort 也是插入排序的一種,只是這種適合於資料很少的時候的一種排序方法,相比於直接的插入排序,折半排序減少了“比較”,和“移動”這兩種步驟.

演算法思想還是二分法

 

#include <iostream>

using namespace std;
void BinarySort(int a[],int length)
{

    for(int i=1;i<length;i++)
    {
        int low=0;
        int high=i-1;
        int temp=a[i];
        while(low<=high)
        {
           int  m=(low+high)/2;
            if(a[i]>a[m]) low=m+1;//如果點在右側
            else  high=m-1;//點在左側
        }
        for(int j=i-1;j>=high+1;j--)
        {
            a[j+1]=a[j];//後移

        }
        a[high+1]=temp;//插入
    }
}
int main()
{
 int a[5]={2,4,5,7,1};
 BinarySort(a,5);
 for(int i=0;i<5;i++)
 {

     cout<<a[i]<<" ";
 }


}