折半排序(插入排序)
阿新 • • 發佈:2018-12-01
折半排序(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]<<" "; } }