标签:插入排序 style binary 适合 ges 倒序 while 快速排序 输入
对于插入排序,如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目,我们称为二分插入排序,代码如下:
void InsertSort_Binary(RecType R[],int n) { int i,j,left,right,mid; RecType temp; for(i=1;i<n;i++) { temp=R[i]; left=0; right=i-1; //初始化左右边界 while(left<=right) //采用二分法查找新元素插入的位置 { mid=(left+right)/2; if(R[mid].key>temp.key) right= mid-1; else left = mid+1; } for(j=i-1;j>0;j--) R[j]=R[j+1]; //将新元素插入位置后面的元素像后移动一位 R[left]=temp; //插入新元素 } }
当n较大时,二分插入排序的比较次数比直接插入排序的最差情况好得多,但比直接插入排序的最好情况要差,所当以元素初始序列已经接近升序时,直接插入排序比二分插入排序比较次数少。二分插入排序元素移动次数与直接插入排序相同,依赖于元素初始序列。
标签:插入排序 style binary 适合 ges 倒序 while 快速排序 输入
原文地址:http://www.cnblogs.com/wujing-hubei/p/6129380.html