- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验7:-内部排序算法比较
实验7: 内部排序算法比较
问题描述
程序对以下4种内部排序(冒泡排序、直接插入排序、简单选择排序、快速排序)算法进行实测比较,测试各种算法在对同样的数据排序时的比较次数和移动次数。
二、输入与输出
输入:根据用户需要输入待排表的表长(100至1000)和不同测试数据的组数
(8至18),不输入则按照默认值进行测试
输出:每次测试完毕,列表显示各种比较指标值:比较次数和移动次数
需求分析
1.本演示程序对以下4种常见的内部排序算法进行实测比较:冒泡排序、直接插入排序、简单选择排序、快速排序
2.待排序表的元素的关键字为整数。用正序、逆序和不同乱序程度的不同数据做测试比较。比较的指标为由关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)
3.演示程序以用户和计算机的对话方式执行,即在计算机终端上菜单,根据用户需要输入待排表的表长(100至1000)和不同测试数据的组数(8至18),不输入则按照默认值进行测试。
四、开发工具与环境
硬件设备:微型计算机系统
软件环境:操作系统Windows,开发工具Devc++
五、功能分析
存储结构 typedef int Typekey;
typedef struct {
Typekey key;
}Type;
typedef struct {
Type r[MAXSIZE+1];//顺序表
int length;
}PList;//排序表
函数一览表
int OneTimeSqCreate(PList L)
/*手动输入创建排序序列函数*/
int ManyTimeSqCreate(PList L,int m)
/*自动生成排序序列函数*/
void BubbleSort(PList L)
/*冒泡排序*/
void InsertSort(PList L)
/*插入排序*/
void SelectSort(PList L)
/*简单选择排序*/
int Partition(PList L,int low,int high)
/*一次快速排序*/
void QSort(PList L,int low,int high)
/*递归形式的快速排序算法*/
void QuickSort(PList L)
/*快速排序*/
六、程序代码
#include iostream
#include malloc.h
#include stdlib.h
#include time.h
#define MAXSIZE 10000
using namespace std;
typedef int Typekey;
int compCount; //关键字的比较次数
int shiftCount; //关键字的移动次数
typedef struct {
Typekey key;
}Type;
typedef struct {
Type r[MAXSIZE+1];//顺序表
int length;
}PList;//排序表
int OneTimeSqCreate(PList L){//手动输入创建排序序列函数
int x,h;
for ( x=1; 1; x++)
{
cinh;
L.r[x].key=h ;
if(getchar()==\n){//只读入一行,换行则终止
break;
}
}
L.length=x;
}
int ManyTimeSqCreate(PList L,int m){//自动生成排序序列函数
L.length=m;
for (int x=1; x=m; x++)
{
L.r[x].key= rand() % m;//随机数的取值范围为0~k
}
return 1;
}
void BubbleSort(PList L) {//冒泡排序
int i,j,l,m=0,n=0;
for(i=1;i=L.length-1;++i){//只需要比较length-1次
for(j=1;j=L.length-i;++j){//内层循环所谓的冒泡,将最大值放到末尾
++m;//比较次数
if(L.r[j].keyL.r[j+1].key){
l=L.r[j].key;
L.r[j].key=L.r[j+1].key;
L.r[j+1].key=l;
n+=3;//关键字移动次数
}
}
}
coutendl 冒泡排序:;
cout比较次数:m;
您可能关注的文档
- 安庆分中心2016年星级评定工作方案.docx
- 安庆协和医院护士注册申请表2.docx
- 安徽省2017-2018学年第一学期期末考试九年级数学试卷.doc
- 安徽省2017年网络效应答案.docx
- 安徽省2018年中考数学考纲变化对照2017-2018.docx
- 安徽省中小型机械制造人业员流失的原因及对策0---副本.doc
- 安徽省亳州市2016-2017学年高一(上)期中化学试卷(Word版-含解析).doc
- 安徽省2017年中考化学试题.doc
- 安徽省亳州市2018届高三上学期期末质量检测政治试卷(pdf版).pdf
- 安徽省六校教育研究会2018届高三第二次联考理综物理试题-word.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)