77范文网 - 专业文章范例文档资料分享平台

题目2_排序综合_报告(4)

来源:网络收集 时间:2019-03-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

西华大学理学院课程设计说明书

}

}

L.r[low] = L.r[high]; //将比枢轴记录小的记录移到低端 while (low < high && L.r[low].key <= pivotkey) ++low; L.r[high] = L.r[low]; //将比枢轴大的记录移到高端

L.r[low] = L.r[0]; //枢轴记录到位 return low; //返回枢轴位置

void Qsort(Sqlist &L, int low, int high) { 置 }

}

Qsort(L, pivotloc + 1, high); // 对高子表递归排序 int pivotloc;

if (low < high) //长度大于1 {

pivotloc = Partition(L, low, high); //将L.r[low..high]一分为二

Qsort(L, low, pivotloc - 1); // 对低子表递归排序,pivotloc是枢轴位

// 堆排序

首先由无序序列建成一个堆,输出堆顶元素后,以堆中最后一个元素替代之,此时根节点的左右子树均为堆,则仅需自上至下进行调整即可,直至所有元素按非递减顺序输出。

void HeapAdjust(HeapType &H, int s, int m) //堆排序 { int j; RedType rc; rc = H.r[s];

for (j=2*s; j<=m; j*=2) {

if (j

12

排序综合

if (rc.key >= H.r[j].key) break; H.r[s] = H.r[j]; s = j; }

H.r[s] = rc; }

void HeapSort(HeapType &H) { int i; RedType temp;

for (i=H.length/2; i>0; --i) HeapAdjust ( H, i, H.length ); for (i=H.length; i>1; --i)

{

temp=H.r[i]; H.r[i]=H.r[1]; H.r[1]=temp;

HeapAdjust(H, 1, i-1); } }

//计算时间的函数

double duration(clock_t x, clock_t y) //算法耗时统计 { }

double dur;

dur = (double)(y - x) / CLOCKS_PER_SEC; return dur;

到此为止,所有功能已经分别实现了,通过执行各个函数,就可以完成相应的功能。现在唯一需要做的就是找个函数来将他们“集中起来”,用来组合在一起,才能让它们互相配合,一起工作。这个任务当然是由main()来完成了:

void main()

13

西华大学理学院课程设计说明书

{

printf(\

printf(\功 能: 排 序 综 合\\n\\n\printf(\编 译 环 境:V S 2 0 1 0\\n\\n\printf(\发 布 日 期:2 0 1 5 - 1 1 - 2 5\\n\\n\

printf(\程序开始!***********************\\n\int i, j, a[M]; char ch;

//定义i,j;待排序数组a[M]; //字符ch,用于记录选项;

srand((unsigned)time(NULL));//设置随机种子; for (i = 1; i < M + 1; i++)

a[i] = rand() % 5000; //随机生成待排序数组a;

printf( \产生200个随机数\\\\/\\n\system(\

for (i = 1; i < M + 1; i++) //每个元素占6个字符,每行十个元素的格式输出随机生成的待

排序数组a;

{ }

system(\

cout << setw(6) << a[i] << \if (i % 10 == 0)

printf(\

loop:

//排序算法主菜单;

printf(\菜 单\\n\

printf(\printf( \请选择你要使用的排序方法:\\n\

printf(\快速排序;\\n\\t\\t2.起泡排序;\\n \\t\\t3.直接插入排序;\\n \\t\\t4.归并排

序;\\n\

14

printf( \简单选择排序;\\n\\t\\t6.堆排序;\\n\\t\\t7.退出.\\n\printf(\

排序综合

loop1://排序过程;

fflush(stdin);

//清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件;为了确

保不影响后面的数据读取;

ch = getchar();

//获取选项,选择相应的排序算法;

在main()里,对各个相应的操作指定了想象的选择序号,使用户简单明了,形象直观,首先必须成功生成2000个随机数,现实中一样。因为你需要排序的对象不明确,又如何能准确的确定相应的查找方式呢,因为生成就是确定需要排序的对象,所以先确定了对象,然后通过一个友好的容易操作的界面面向用户,这样即使用户对计算机一窍不通,也能够轻松的使用这个系统进行随机数的各种排序了。为了使用户能够在进行了一项操作之后还能进行另外的操作,例如:快速排序之后还可以继续选择堆排序等等。所以让程序一直执行,直到用户输入退出的信息后才中止程序,这样做程序显得更人性化些!

到此,整个程序也就完成了。 3.3实验结果

文件存储排序部分结果如下图:

图0

15

西华大学理学院课程设计说明书

4.系统测试和结果分析

4.1设计测试数据

随机生成2000个数(为了直观一些我本次调试只是生成了200个随机数) 4.2调试的详细过程

对于所有执行过程,通过图片最好说明问题了,程序开始如下图所示: 0. 运行程序初始界面:

图 1

1.生成随机数,按任意键即可,如下图2:

图 2

2.点击任意键继续 ,弹出选择菜单,并提示用户选择需要的服务如图3:

16

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库题目2_排序综合_报告(4)在线全文阅读。

题目2_排序综合_报告(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/537519.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: