ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:95KB ,
资源ID:771256      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-771256.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1问题要求及任务描述.DOC)为本站会员(国***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

1问题要求及任务描述.DOC

1、1 问题要求及任务描述1.1 题目要求利用随机函数产生 N 个随机整数(20000 以上) ,对这些数进行多种方法进行排序。要求:1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序) 。并把排序后的结果保存在不同的文件中。2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比) ,找出其中两种较快的方法。3)如果采用 4 种或 4 种以上的方法者,可适当加分。1.2 主要任务分别实现直接插入、直接选择、冒泡、快速排序、堆排序的算法。从时间的角度来分析各种排序的性能。通过测试多组数据来掌握各种排序的方法及适用

2、场合,并能在解决实际问题灵活运用。在编写代码的时候,有以下几个问题:(1)建立一个主函数,在主函数中要有菜单界面,和输入功能键相应执行的功能。并且要求能循环使用系统。(2)分别实现直接插入、直接选择、冒泡、快速排序、堆排序的算法。(3)通过冒泡排序法来测试每组数据用那种排序算法最优。2 解决问题的主要思路和方法2.1 关键问题核心问题: 排列组合数据模型(逻辑结构):30000 个随机数存储结构: 保存在不同的文件核心算法: 直接插入、直接选择、冒泡、快速排序、堆排序的算法输入数据: 初始化数组:rand()%50000+1 输出数据:排序内容到文件,排序所用时间2.2 拟采用解决问题的方法把

3、程序分为多个模块,有的是排序的算法如:void InsertSort(int a,int p),有的是计算排序所用时间的函数如:double TInsertSort(int a,int p),还有显示菜单的模块void menu()和显示排序结果模块 void Disp(int a)等等,各个模块之间可以互相调用,节省了资源。用 case 作为各个功能的入口。用 QueryPerformanceFrequency()和QueryPerformanceCounte()函数计时,精度比用 clock()高,避免了很多时候因排序速度太快而出现运行时间为 0 的现象。用 srand 函数作为随机数发生

4、器的初始化函数,用rand 产生随机数。把计算得的排序时间存入数组并经冒泡排序得出最快的两种排序法。下面是所用排序法的算法思想:(1)直接插入排序的基本思想是基于插入,开始假定第一个记录有序,然后从第二个记录开始,依次插入到前面有序的子文件中。即将记录 ai(2#include #include #include #include #define N 30000void Wrong() printf(“n=按键错误!n“);getchar();void Disp(int a)int i;system(“cls“);for(i=0;i0j-) aj=aj-1; aj=temp; void Sel

5、ectSort(int a,int p) /选择排序 int i,j,k; for(i=0;ii;j-) /*比较,找出本趟最小关键字的记录*/if (aj=0;i-)creatheap(a,i,n-1);for(i=n-1;i=1;i-)t=a0;a0=ai;ai=t;creatheap(a,0,i-1);void quicksort(int a,int n,int p) int i,j,low,high,temp,top=-1;struct nodeint low,high;stN;top+;sttop.low=0;sttop.high=n-1;while(top-1) low=sttop

6、.low;high=sttop.high;top-;i=low;j=high;if(lowtemp)j-;if(ij)ai=aj;i+;while(ijif(ij)aj=ai;j-;ai=temp;top+;sttop.low=low;sttop.high=i-1;top+;sttop.low=i+1;sttop.high=high;double TInsertSort(int a,int p)int i;int bN;for(i=0;iN;i+)bi=ai;LARGE_INTEGER m_liPerfFreq=0;QueryPerformanceFrequency( LARGE_INTEGE

7、R m_liPerfStart=0;QueryPerformanceCounter(InsertSort(b,p);LARGE_INTEGER liPerfNow=0;QueryPerformanceCounter(double time=liPerfNow.QuadPart - m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf(“n 用直接插入排序法用的时间为%f 秒;“,time);FILE *fp;fp=fopen(“直接插入排序.txt“,“w“);for(i=0;iN

8、;i+)fprintf(fp,“%d “,bi);fclose(fp);return(time);double TSelectSort(int a,int p)int i;int bN;for(i=0;iN;i+)bi=ai;LARGE_INTEGER m_liPerfFreq=0;QueryPerformanceFrequency( LARGE_INTEGER m_liPerfStart=0;QueryPerformanceCounter(SelectSort(b,p);if(p!=6)Disp(b);getchar();LARGE_INTEGER liPerfNow=0;QueryPerf

9、ormanceCounter(double time=liPerfNow.QuadPart - m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;printf(“n 用直接选择排序法用的时间为%f 秒;“,time);FILE *fp;fp=fopen(“直接选择排序.txt“,“w“);for(i=0;iN;i+)fprintf(fp,“%d “,bi);fclose(fp);return(time);double TBubbleSort(int a,int p)int i;int bN;for(i=0;iN;i+)bi=ai;LARGE_

10、INTEGER m_liPerfFreq=0;QueryPerformanceFrequency( LARGE_INTEGER m_liPerfStart=0;QueryPerformanceCounter(BubbleSort(b,p);LARGE_INTEGER liPerfNow=0;QueryPerformanceCounter(double time=liPerfNow.QuadPart - m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf(“n 用冒泡排序法用的时间

11、为%f 秒;“,time);FILE *fp;fp=fopen(“冒泡排序.txt“,“w“);for(i=0;iN;i+)fprintf(fp,“%d “,bi);fclose(fp);return(time);double Theapsort(int a,int n,int p) int i;int bN;for(i=0;iN;i+)bi=ai;LARGE_INTEGER m_liPerfFreq=0;QueryPerformanceFrequency( LARGE_INTEGER m_liPerfStart=0;QueryPerformanceCounter(heapsort(b,N,p

12、);LARGE_INTEGER liPerfNow=0;QueryPerformanceCounter(double time=liPerfNow.QuadPart - m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar();printf(“n 用堆排序法用的时间为%f 秒;“,time);FILE *fp;fp=fopen(“堆排序.txt“,“w“);for(i=0;iN;i+)fprintf(fp,“%d “,bi);fclose(fp);return(time);double Tquick

13、sort(int a,int n,int p)int i;int bN;for(i=0;iN;i+)bi=ai;LARGE_INTEGER m_liPerfFreq=0;QueryPerformanceFrequency( LARGE_INTEGER m_liPerfStart=0;QueryPerformanceCounter(quicksort(b,N,p);LARGE_INTEGER liPerfNow=0;QueryPerformanceCounter(double time=liPerfNow.QuadPart - m_liPerfStart.QuadPart;time/=m_liPerfFreq.QuadPart;if(p!=6)Disp(b);getchar(); printf(“n 用快速排序法用的时间为%f 秒;“,time);FILE *fp;fp=fopen(“快速排序.txt“,“w“); for(i=0;iN;i+)fprintf(fp,“%d “,bi);fclose(fp); return(time);

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。