多关键字排序数据结构-设计

上传人:枫** 文档编号:476835890 上传时间:2023-12-24 格式:DOC 页数:3 大小:15.01KB
返回 下载 相关 举报
多关键字排序数据结构-设计_第1页
第1页 / 共3页
多关键字排序数据结构-设计_第2页
第2页 / 共3页
多关键字排序数据结构-设计_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《多关键字排序数据结构-设计》由会员分享,可在线阅读,更多相关《多关键字排序数据结构-设计(3页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计报告 题目:多关键字排序 多关键字排序【问题描述】多关键字的排序有一定的实用范围。例如:在进行高考分数处理时,除了需对总分进行排序外,不同的专业对单科分数的要求不同,因此尚需在总分相同的情况下,按用户提出的单科分数的次序要求排出考生录取的次序。【基本要求】(1) 假设待排序的记录数不超过10000,表中记录的关键字数不超过5,各个关键字的范围均为0至100.。按用户给定的进行排序的关键字的优先关系,输出排序结果。(2) 约定按LSD法进行多关键字的排序。在对各个关键字进行排序时采用两种策略:其一是利用稳定的内部排序法,其二是利用“分配”和“收集”的方法。并综合比较这两种策略。【

2、测试数据】由随机数产生器生成。C语言源程序#include #include #include#include#define N 200typedef struct int key5;score;score srN;void Merge( score R,int low,int m,int high,int keynum) /将两个有序的Rlow.m)和Rm+1.high归并成一个有序的Rlow.high int i,j,k;i=low,j=m+1,k=0;score *R1; R1=(score*)malloc(high-low+1)*sizeof(score); /临时申请空间 if(!R

3、1)return; /申请空间失败 while(i=m&j=Rj.keykeynum)R1k+=Ri+;else R1k+=Rj+;while(i=m) /若第1个数组非空,则复制剩余记录到R1中 R1k+=Ri+; while(j=high) /若第2个数组非空,则复制剩余记录到R1中 R1k+=Rj+; for(k=0,i=low;i=high;k+,i+) Ri=R1k; /归并完成后将结果复制回Rlow.high void MergeSort(score R,int low,int high,int keynumber) /对Rlow.high进行二路归并排序 int mid; if(

4、lowhigh) /区间长度大于1 mid=(low+high)/2; /分解 MergeSort(R,low,mid,keynumber); /递归地对Rlow.mid排序 MergeSort(R,mid+1,high,keynumber); /递归地对Rmid+1.high排序 Merge(R,low,mid,high,keynumber); /组合,将两个有序区归并为一个有序区 int main() int i,j,n,pepole;printf(请输入总记录条数 ,和关键字的个数,并且以空格作为间隔符n);scanf(%d%d,&pepole,&n); printf(按记录顺序:以关键

5、字优先次序从低到高产生随机关键字,最后一个关键字是总分由系统自动计算n);srand(unsigned)time(NULL); for (i=0; ipepole; i+) sri.keyn-1=0; for(j=0;jn-1;j+) sri.keyj=rand()%100; sri.keyn-1=sri.keyn-1+sri.keyj; printf( %4d,sri.keyj); printf( %4d,sri.keyn-1); printf(n); for (i=0;in;i+)MergeSort(sr,0,pepole-1,i); printf(n排序结果为:n);for(i=0;ipepole;i+) for(j=0;jn;j+) printf( %3d ,sri.keyj ); printf(n);system(pause);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号