标签:
和直接插入排序相似,但是在查找有序子表的时候采用折半查找
void InsertSort(ElemType A[], int n){int i, j, low, high, mid;for(i=2; i<=n; i++)//依次将A[2]~A[n]插入到前面已排序序列{A[0]=A[i];//复制为哨兵,A[0]不存放元素low=1;//设置折半查找的范围high=i-1;while(low<=high)//折半查找,默认是递增有序{mid=(low+high)/2;if(A[mid].key>A[0].key)//查找左半边子表high=mid-1;else//查找右半边子表low=mid+1;}for(j=i-1; j>=high+1; --j)A[j+1]=A[j];//统一后移元素,空出插入位置A[high+1]=A[0]; //插入操作}}
标签:
原文地址:http://www.cnblogs.com/zhuzhenfeng/p/a325fc8e4226a9b5cc724a7a994e9fe1.html