您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > C语言版数据结构-希尔排序
2.希尔排序详细设计#includestdio.h#includestdlib.h#includetime.htypedefintKeyType;typedefintOtherType;#defineMax_Size5000typedefstruct{KeyTypekey;OtherTypeother_data;}RecordType;voidShellInsert(RecordTyper[],intlength,intdelta)/*对记录数组r做一趟希尔插入排序,length为数组的长度,delta为增量*/{inti,j;for(i=1+delta;i=length;i=i+delta)//1+delta为第一个子序列的第二个元素的下标if(r[i].keyr[i-delta].key){RecordTypet;t=r[i];//备份r[i]for(j=i;j0&&t.keyr[j-delta].key;j-=delta)r[j]=r[j-delta];r[j]=t;}}/*ShellInsert*/voidShellSort(RecordTyper[],intlength,intdelta[],intn)/*对记录数组r做希尔排序,length为数组r的长度,delta为增量数组,n为delta[]的长度*/{for(inti=0;in;++i)ShellInsert(r,length,delta[i]);}voidmain(){inti;RecordTyper[Max_Size];intlen;intdelta[4]={6,4,2,1};printf(请输入待排序记录的长度:);scanf(%d,&len);srand((unsigned)time(NULL));for(i=1;i=len;i++)r[i].key=rand();printf(\n待排序记录:\n);for(i=1;i=len;i++)printf(%6d,r[i].key);printf(\n);ShellSort(r,len,delta,4);printf(\n排序后的记录:\n);for(i=1;i=len;i++)printf(%6d,r[i].key);printf(\n\n);}测试结果
本文标题:C语言版数据结构-希尔排序
链接地址:https://www.777doc.com/doc-5924705 .html