- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验02-排序 PAGE \* MERGEFORMAT12
《数据结构与算法》实验报告
班级学号姓 名实验周次实验日期xxxxxxxxxxxxxxxxx2015年10月 28 日实验02:排序
一、实验目的
1.掌握各种常用排序方法的特点及其存储的方式。
2.掌握各种排序算法的要求、方法和过程。
3.了解各种排序算法效率的分析和计算方法。
二、实验内容
以Sort01(ReferenceParameter).cpp或者Sort02(PointerParameter).cpp为基础,实现如图2-1程序界面所示的常用排序算法。
注意:功能4(快速排序)、功能6(堆排序)和功能7(归并排序)是需要完成的部分;功能5(希尔排序)因为本学期采用的课本上没有提及,所以直接将答案给出了,大家只需看懂理解即可,其它和排序无关的功能项均已给出实现代码,大家无需更改。
三、实验要求
1、Sort01(ReferenceParameter).cpp和Sort02(PointerParameter).cpp选???其中一题即可(两题代码的思路完全一致,只有实现时参数传递方式的差别)。
2、演示程序SortDemo.exe中的所有排序均是升序排列,但完成本实验时,学号为单号的同学:排序时要求升序排列;学号为双号的:排序时要求降序排列。
3、实验报告电子稿和打印稿及其它提交方面的要求同实验01。
四、运行结果
图2-1 随机产生一批整数并快速排序
图2-2 随机排列表中元素并希尔排序
图2-3 随机排列表中元素并希尔排序
图2-4 随机排列表中元素并归并排序
五、参考程序
#include stdio.h
#include stdlib.h
#include time.h
#define MAX 50
// 顺序表结构体
typedef struct
{
int s[MAX]; // 存放一批随机整数,数组大小MAX不能扩充
int length; // 当前表中元素的个数
} SeqList;
// 功能菜单
void menu()
{
printf(\n\t*************排序*************\n);
printf(\t* 1 随机产生一批整数 *\n);
printf(\t* 2 手动输入一批整数 *\n);
printf(\t* 3 将表中数据随机化 *\n);
printf(\t* 4 快速排序 *\n);
printf(\t* 5 希尔排序 *\n);
printf(\t* 6 堆排序 *\n);
printf(\t* 7 归并排序 *\n);
printf(\t* 8 依次显示表中所有数据 *\n);
printf(\t* 0 退出程序 *\n);
printf(\t************************************\n);
}
/* 初始化一个空的顺序表 */
SeqList *init()
{
// 开辟顺序表空间
SeqList *p=(SeqList *)malloc(sizeof(SeqList));
// 设置顺序表的初始长度为0
p-length=0;
// 返回整个顺序表的(起始)地址
return p;
}
/* 随机产生一批整数到线性表中 */
void randGen(SeqList *p)
{
int num, i;
printf(请输入元素个数(=%d):\n, MAX-1);
scanf(%d, num);
srand((int)time(0));
if(num = MAX)
{
// 随机产生num个整数存入顺序表中(从1号单元开始存放,0号单元留作“哨兵”)
for(i=1; i=num; i++)
p-s[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));
p-length=num;
printf(顺序表中已成功放入%d个整数!\n, num);
}
else
printf(顺序表空间不够,请重新输入元素个数!\n);
}
/* 手动输入一批整数到线性表中 */
void manInput(SeqList *p)
{
int num, i;
printf(请输入元素个数
文档评论(0)