基于 C 语言的多种排序方法的实现1 引 言1.1 课题背景排序问题源远流长,一直是数学地重要组成部分。随着各种信息的快速更新,排序问题也走进了其他领域以及我们地日常生活。如何高效地排序一直困扰着我们。1.2 课程设计目的排序是数学的重要组成部分,工作量大是其存在的问题。如何高效地排序?本程序就是解决这个问题而设计。程序中,把数列储存在数组中,采纳插入排序等十种排序方法对数组元素进行排序,高效地解决了排序问题。本软件开发的平台为最新的微软公司出版的市面最新系统 Windows 2000,而且可以作为自身的运行平台非常广泛,包括 Windows 98/2000/XP/Vista 等等。1.3 课程设计内容本程序把对数列的排序转化为对数组元素的排序,用户可以根据自己的实际问题选择系统提供的七种排序方法的任意一种进行排序。程序通过自身的推断以及处理实现排序。程序最后输出每趟排序及初始排序结果。 2 系统分析与设计方案 2.1 系统分析 设计一个排序信息管理系统,使之能够操作实现以下功能:1) 显示需要输入的排序长度及其各个关键字2) 初始化输入的排序序列3) 显示可供选择的操作菜单4) 显示输出操作后的移动次数和比较次数5) 显示操作后的新序列5) 可实现循环继续操2.2 设计思路通过定义 C 语言顺序表来存储排序元素信息,构造相关函数,对输入的元素进行相应的处理。 [2]2.3 设计方案设计方案如图 2.1 所示图 2.1 设计方案具体流程见图 2.2开始定义顺序表相关函数的声明主函数退出系统开始菜单插 入 排序冒 泡 排序快 速 排序堆排序退 出 排序 输入数据是否继续操作结束折 半 插入排序简 单 选择排序图 2.2 程序流程图3 功能设计3.1 SqList 顺序表其中包括顺序表长度,以及顺序表。源代码如下:[1]typedef struct{ KeyType key; //关键字项 InfoType otherinfo; //其他数据项}RedType;typedef struct{ RedType r[MaxSize+1]; //r[0]作为监视哨int length; //顺序表长度}SqList;3.2 直接插入排序 直接插入排序是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增 1 的有序表 图 3.1 直接插入排序示意图将第 i 个记录的关键字 r[i].key 顺序地与前面记录的关键字 r[i-1].key,r[i-2].key,有序序列 r[1……i-1]无序系列 r[i……n]r[i]有序序列 r[1……i] 无序系列 r[i+1……n]……,r[1].key 进行比较,把所有关键字大于 r[i].key 的记录依次...