- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
21、序实验(一)
实验二十一 排序实验(一)
一、实验目的
掌握用VC工具上机调试集合结构基于插入策略的排序算法。
掌握在线性表的顺序存储结构下直接插入排序、折半插入排序和希尔排序算法实现。
二、实验学时
2学时
三、实验类型
验证型
四、实验内容
数据集合的顺序存储结构下直接插入排序算法实现。
数据集合的顺序存储结构下折半插入排序算法实现。
数据集合的顺序存储结构下希尔排序算法实现。
五、实验原理
排序概述
排序是计算机程序设计中的一种重要操作,在数值计算或数据处理过程中,都会直接或间接用到数据的排序问题。排序的功能是将一个数据元素(或称记录)的无序序列,按数据元素的关键字大小,排列成一个递增或递减有序的记录序列。
由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,据此可将排序方法分为内排序和外排序。内排序包括插入、交换、选择和归并等几类排序。
基于插入策略的排序概述
插入类排序的基本思想是假定记录序列中前面的一部分记录已经有序,把后面的一个记录插入已排序的有序子序列中去,使得插入这个记录之后,得到的依然是有序序列,从而逐步扩大有序子序列的长度,直到所有记录都有序为止。直接插入排序是采用顺序查找法来确定记录的插入位置,折半插入排序是采用折半查找法来确定记录的插入位置,希尔排序是对待排序记录序列先做宏观直接插入排序调整,再做微观直接插入排序调整,故称缩小增量排序。
3、基于插入策略的排序程序基本算法
void CreateSqList(SqList *L) /*创建线性表*/
void InsertSort(SqList *L) /*直接插入排序算法*/
void BInsertSort(SqList *L) /*折半插入排序算法*/
void ShellInsert(SqList *L,int dk) /*每一趟的希尔排序*/
void ShellSort(SqList *L,int dlta[],int t) /*希尔排序算法*/
Display(SqList *L) /*输出线性表*/
void menu() /*定义菜单*/
void func() /*封装的功能函数*/
4、模块层次图
要求画出基于插入策略的排序程序模块层次图。如图所示
图19 基于插入策略的排序程序算法模块层次图
5、关键算法NS图
六、测试数据:
1、直接插入排序
线性表长度:5
线性表:300,301,299,0,-1
2、折半插入排序
线性表长度:5
线性表:300,301,299,0,-1
3、希尔排序
线性表长度:5
线性表:300,301,299,0,-1
七、实验步骤及要求
用VC语言编程实现线性表的顺序查找和折半查找算法。
输入操作序号1选择直接插入排序;
输入顺序表长度及相应的顺序表;
输出顺序表;
输出直接插入排序结果;
输入操作序号2选择折半插入排序;
输入顺序表长度及相应的顺序表;
输出顺序表;
输出折半插入排序结果;
输入操作序号3选择希尔排序;
输入顺序表长度及相应的顺序表;
输出顺序表;
输出直接希尔排序结果;
程序运行结束。
八、运行结果
图24 直接插入排序算法运行图
图 折半插入排序算法运行图
图 希尔排序算法运行图
九、思考问题
结合实验过程,回答下列问题:
思考直接插入排序算法运行步骤?试写出相应的算法。
思考折半插入排序算法运行步骤?试写出相应的算法。
思考希尔排序算法运行步骤?试写出相应的算法。
十、实验报告要求
调试程序过程中遇到的问题及解决方案;
本次实验的结论与体会。
程序附录:基于线性表的插入类策略排序算法的代码。
#include stdio.h
#include process.h
#define MAXSIZE 20 /*最大的空间数量*/
typedef int KeyType;
typedef struct
{
KeyType key; /* 只有唯一的关键字*/
}RedType;
typedef struct
{
RedType r[MAXSIZE+1];
int length;
}SqList; /*数据元素组织的结构*/
void CreateSqList(SqList *L) /*创建线性表*/
您可能关注的文档
- 201年注册会计师 审计 杨闻萍 习题班-练习sj_lx2401.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0101.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0201.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0601.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0401.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0501.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0801.doc
- 201年注册会计师 审计 杨闻萍 习题班sj_jy0701.doc
- 201年注册会计师 审计 杨闻萍 习题班-练习sj_lx2301.doc
- 201年注册会计师 税法 基础班 叶青 习题 全sf_lx0701.doc
文档评论(0)