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

折半插入排序

时间:2014-11-22 10:29:13      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   使用   sp   for   文件   div   

#include<stdio.h>
#define MAXSIZE 100   //假设文件长度,即待排序的记录数目
typedef int KeyType;
typedef struct{
    KeyType key;
}RcdType;
typedef struct{
    RcdType R[MAXSIZE+1];//存储待排序记录的一维数组,R或作为[0]闲置或作为“哨兵使用
    int length;
}SortSqlist;
//关键字类型为KeyType自己定义
void bininsertSort(SortSqlist &L){
    int i,j,low,high,mid;
    for(i=2;i<=L.length;++i){  
        L.R[0]=L.R[i];//复制为哨兵
      low=1;high=i-1;
      while(low<=high){//在R[low...high]中折半查找插入位置
        mid=(low+high)/2;
          if(L.R[0].key<L.R[mid].key) high=mid-1;//插入点在低半区
          else low=mid+1;//插入点在高半区
      }
      //for(j=i-1;j>=high+1;--j)
      for(j=i-1;j>=low;--j) L.R[j+1]=L.R[j];//记录后移
          L.R[high+1]=L.R[0];//插入
    }
}

int main(){
 int i;
 SortSqlist L;
 printf("输入排序的个数");
 scanf("%d",&L.length);
 for(i=1;i<=L.length;++i)
   scanf("%d",&L.R[i].key);
 bininsertSort(L);
 for(i=1;i<=L.length;++i)
    printf("%d ",L.R[i].key);
 return 0;
}

 

折半插入排序

标签:style   blog   io   color   使用   sp   for   文件   div   

原文地址:http://www.cnblogs.com/leijiangtao/p/4114764.html

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