数据结构-课程设计报告(排序算法比较)(共18页).doc
《数据结构-课程设计报告(排序算法比较)(共18页).doc》由会员分享,可在线阅读,更多相关《数据结构-课程设计报告(排序算法比较)(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数据结构课程设计报告学院:计算机科学与工程专业:计算机科学与技术班级:09级班学号:姓名:指导老师:时间: 2010年12月一、课程设计题目: 1、哈夫曼编码的实现 2、城市辖区地铁线路设计 3、综合排序算法的比较二、小组成员:三、题目要求:1哈夫曼编码的实现(1)打开若干篇英文文章,统计该文章中每个字符出现的次数,进一步统一各字符出现的概率。(2)针对上述统计结果,对各字符实现哈夫曼编码(3)对任意文章,用哈夫曼编码对其进行编码(4)对任意文章,对收到的电文进行解码2某城市要在其各个辖区之间修建地铁来加快经济发展,但由于建设地铁的费用昂贵,因此需要合理安排地铁的建设
2、路线。(1)从包含各辖区的地图文件中读取辖区的名称和各辖区的直接距离(2)根据上述读入的信息,给出一种铺设地铁线路的解决方案。使乘客可以沿地铁到达各个辖区,并使总的建设费用最小。(3)输出应该建设的地铁路线及所需要建设的总里程信息。3综合排序算法的比较各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概的执行时间。试通过随机的数据比较各算法的关键字比较次数和关键字移动的次数。(1)对以下各种常用的内部排序算法进行比较:直接插入排序,折半插入排序,二路归并排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序,归并排序,基数排序。(2)待排序的表长不少于100,要求采用随机数。
3、(3)至少要用5组不同的输入数据做比较:比较的次数为有关键字参加的比较次数和关键字移动的次数(4)改变数据量的大小,观察统计数据的变化情况。(5)对试验统计数据进行分析。对各类排序算法进行综合评价。四、项目安排:1、小组内分工合作分工:负责哈夫曼编码的实现,负责城市辖区地铁线路设计,负责综合排序算法的比较。合作:组内,组外进行交流,组长帮助解决组员的在项目过程中的困难,并控制进度。五、完成自己的任务:任务:综合排序算法比较1. 思想实现流程图 开始 初始数据 选择排序 快速排序 冒泡排序 希尔排序 折半排序 直接排序 排序优劣 排序结果统计排序效率2.代码的实现#include#include
4、#include#define MAXSIZE 1000int LMAXSIZE+1;int num=100;int count1=0,count2=0,count3=0,count4=0,count5=0,count6=0,count7=0,count8=0,count9=0,count10=0;int creatdata()/产生随机数FILE *f;int row;row=num/10;f = fopen(O_data.txt, wt);/创建并写入产生的随机数 if(f) for(int i=0; i10; i+)/控制列 for(int j=0; jrow; j+) fprintf(
5、f, %2dt, rand()%100);/调用rand()函数 控制为两位数 fprintf(f, n); fclose(f); return 0;void zjpx(int LMAXSIZE)/直接插入排序 creatdata();int i,j; for(i=2;i=num;i+)/ 从第二个开始插入if(Li=Li-1)L0=Li;/设置哨兵 并记录要插入的值Li=Li-1;count2=count2+2;/如果if 成立 则此处 关键字移动for(j=i-2;(L0Lj);j-)/开始向前寻找Lj+1=Lj;count1+;/此处关键字比较count2+;/如果两次if成立 则此处关
6、键字移动/记录后移 Lj+1=L0; /插入到正确位置 count2+;count1+; printf(直接排序后的结果是:n关键字比较了%d次n关键字移动了%d次n ,count1,count2); for(i=2;i=num;i+) printf(%2d ,Li);if(i%10=0)printf(n);void zbpx(int LMAXSIZE)/折半插入排序 creatdata();int i,j,m,low,high;/定义标志 for(i=2;i=num;+i)/ 从第二个开始插入 L0=Li;count4+;/此处关键字移动low=1,high=i-1; while(low=h
7、igh)/寻找插入位置 m=(low+high)/2;/折半 找到位置 if(L0=high+1;j-)Lj+1=Lj;/记录后移count4+;/此处 关键字 移动Lhigh+1=L0;/插入记录count4+;/此处关键字 移动 printf(折半插入排序后的结果是:n关键字比较了%d次n关键字移动了%d次n ,count3,count4); for(i=2;i=1)/在第一组内进行向后的比较for(i=d+1;i=1)成立 则此处有关键字的移动while(j0)&(tempLj)/对组内进行排序Lj+d=Lj;j=j-d;count6+;/如果 while 成立 则此处有关键字的移动co
8、unt5+;/由于组内比较 所以此处有关键字的比较Lj+d=temp;count6+;/此处有关键字的移动d=d/2;printf(n希尔排序后的结果是:n关键字比较了%d次n关键字移动了%d次n ,count5,count6); for(i=2;i=num;i+)printf(%2d ,Li);if(i%10=0)printf(n );void mppx(int LMAXSIZE)/冒泡排序creatdata(); int flag=1;int temp; for(int i=1;i=num & flag!=0;i+)/第一层循环排序 flag=0; for(int j=1;j=(num-i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 排序 算法 比较 18
限制150内