标签:style blog color io 使用 for 文件 sp 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 ShellPass(SortSqlist &L,int d){ int i,j; for(i=d+1;i<=L.length;i++) if(L.R[i].key<L.R[i-d].key){ L.R[0]=L.R[i];j=i-d;// L.R[0]只是暂存单元,不是哨兵 do{ L.R[j+d]=L.R[j];//后移记录 j=j-d;//查找前一记录 }while(j>0&&L.R[0].key<L.R[j].key); L.R[j+d]=L.R[0];//插入L.R[i]到正确位置上 } } void ShellSort(SortSqlist &L,int d[],int k){ //对顺序表L进行希尔排序,d[0]~d[k-1]是值递减的增量序列,且d[k-1]=1; int i=0; for(i=0;i<k;i++)ShellPass(L,d[i]); } int main(){ int i,d[]={5,3,1},k=3; SortSqlist L; printf("输入排序的个数"); scanf("%d",&L.length); for(i=1;i<=L.length;++i) scanf("%d",&L.R[i].key); ShellSort(L,d,k); for(i=1;i<=L.length;i++) printf("%d ",L.R[i].key); return 0; }
标签:style blog color io 使用 for 文件 sp div
原文地址:http://www.cnblogs.com/leijiangtao/p/3995479.html