码迷,mamicode.com
首页 > 编程语言 > 详细

折半插入排序

时间:2015-08-21 19:05:33      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

和直接插入排序相似,但是在查找有序子表的时候采用折半查找

  1. void InsertSort(ElemType A[], int n)
  2. {
  3. int i, j, low, high, mid;
  4. for(i=2; i<=n; i++)//依次将A[2]~A[n]插入到前面已排序序列
  5. {
  6. A[0]=A[i];//复制为哨兵,A[0]不存放元素
  7. low=1;//设置折半查找的范围
  8. high=i-1;
  9. while(low<=high)//折半查找,默认是递增有序
  10. {
  11. mid=(low+high)/2;
  12. if(A[mid].key>A[0].key)//查找左半边子表
  13. high=mid-1;
  14. else//查找右半边子表
  15. low=mid+1;
  16. }
  17. for(j=i-1; j>=high+1; --j)
  18. A[j+1]=A[j];//统一后移元素,空出插入位置
  19. A[high+1]=A[0]; //插入操作
  20. }
  21. }





折半插入排序

标签:

原文地址:http://www.cnblogs.com/zhuzhenfeng/p/a325fc8e4226a9b5cc724a7a994e9fe1.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!