内部排序算法比较
内部排序算法比较
班级: 姓名: 学号: 完成日期:
题目:试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。 一.需求分析
1.对常用的6种内部排序算法进行比较:冒泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序。
2.待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)
3.最后要对结果作出简单分析,包括对各组数据得到结果波动大小的解释。 二.概要设计 1.主界面设计
对六种内部排序算法进行比较,可通过随机数程序产生几组数,要求用户手动输入产生随机数的个数。运行界面如图所示:
选择1运行程序,选择2退出程序 2.存储结构设计
本程序采用顺序表结构,具体结构定义如下: typedef struct {
int key; }ElemType; typedef struct {
ElemType *elem; int length; }SqList;
3.系统功能设计
1)分配内存空间。创建顺序表
2)利用伪随机数产生程序产生随机数,作为程序运行的数据 3)实现每种排序算法的功能函数 三.模块设计 1.模块设计 随机数产生模块 主程序模块
排序算法模块
2.系统子程序及功能设计
本系统共设置13个函数,其中包括主函数。各函数名及功能说明如下。 1) void addlist(SqList &L) //建立个空顺序表 2) void random(SqList &L) //随机数产生函数 3) void memory(SqList &M,SqList &L) //记录L,以保证每个排序函数使用一组随机数 4) void BubbleSort(SqList &L) //冒泡排序 5) void InsertSort(SqList &L) //直接插入排序 6) void SelectSort(SqList &L) //选择排序
7) int Partition(SqList &L,int low,int high) //返回快速排序枢轴的位置 8) void QSort(SqList &L,int low,int high) //对子序列作快速排序 9) void QuickSort(SqList &L) //对数序表作快速排序 10)void ShellSort (SqList &L) //希尔排序
11)void HeapAdjust(SqList &L,int s,int m )//堆排序算法子程序 12)void HeapSort(SqList &L) //对顺序表进行堆排序 13)void main() //主函数,调用各模块函数
3.函数主要调用关系
13)main() 1 2 9 3 4 12 5 10 6 8 11 7
四.详细设计
1.数据类型定义 typedef struct {
int key; }ElemType; typedef struct {
ElemType *elem; int length; }SqList;
2.全局变量定义
int bj1=0,yd1=0,bj2=0,yd2=0,bj3=0,yd3=0,bj4=0,yd4=0,bj5=0,yd5=0,bj6=0,yd6=0;//记录每种算法的比较,移动次数 int n;//随机数的个数
2.系统主要子程序详细设计 (1)主函数设计模块
主要是输入数据,以及程序界面的设计,调用系统的各个子程序,并输出结果。(详见源程序)
(2)随机数产生模块
利用伪随机数产生程序产生数据,并存储到顺序表中。 void random(SqList &L) {
L.length=0;
static bool first=true; if(first) {
srand(time(0)); first=false;
}//使每次产生的随机数不同 for(int i=1;i a: { L.elem[i].key=rand(); if(L.elem[i].key>30000) goto a; ++L.length; } (3)排序算法模块 实现冒泡排序,直接插入排序,简单选择排序,快速排序,希尔排序以及堆排序的算法。(祥见源程序) 五.测试分析 运行程序后,得到如图所示: 输入:1 输入:100 选择1重复上述步骤,输入150,200,250,300得到另外四个结果: 退出程序,请选择:2
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




