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

2019-03-22 16:28

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

}

}

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


题目2_排序综合_报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《应用语言学》教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: