77范文网 - 专业文章范例文档资料分享平台

题目3 - 排序综合 - 报告课件(2)

来源:网络收集 时间:2020-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

西华大学理学院课程设计说明书

1 引 言

1. 1问题的提出

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。

排序算法是数据结构学科经典的内容,其中内部排序现有的算法有很多种,其中包含冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序等,各有其特点。

对排序算法比较的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑所用时间作为复杂性的度量。

1.2 C语言

C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,有时一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。

1.3 C语言发展过程

1973年,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1.4任务与分析

2

排序综合

前面分析了排序的种类以及过程,因此,本系统实现了几种常用的排序方法, 包括:直接插入排序、希尔排序、冒泡排序、非递归的快速排序、简单排序。

2 系统分析

2.1 功能需求 2.1.1总体要求

任务:

机函数产生N个随机整数(20000以上),对这作数进行多种方法进行排序。 要求:

1) 至少采用4种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。

2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

如果采用4种或4种以上的方法者,可适当加分。

2.1.2 本人所做模块

通过对任务的要求分析,我将任务分成了几个模块,从而实现了任务的总体要求。

包括了输入模块、选择排序方法模块、输出模块。其中: 1、输入模块

利用随机函数产生N个数(20000以上),产生的数据个数由用户自己输入。 2、选择排序方法模块

在菜单中通过输入相应的选项编号来选择采用何种算法排序,包括的排序算法有:直接插入排序、希尔排序、冒泡排序、快速排序、简单排序。 3、输出模块

输出排序前的,或者排序后的数据元素到屏幕上显示,并且输出以某种算法排序后的数据元素到文件中保存。

最后让主函数对这几个模块进行调用,从而实现全部功能。

2.2数据需求

利用随机函数产生的随机数。

3

西华大学理学院课程设计说明书

3 详细设计与分析

3.1设计思路

1、直接插入排序

思路:设有一组关键字{K1,K2,……,Kn},排序开始便认为K1是一个有序的序列,让 K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列,让K3插入到表长为 2的有序序列,使之成为个表长为3的有序序列,依次类推,最后让Kn插入上述表长为 n-1的有序序列,得到一个表长为n的冇序序列。 2、希尔排序

思路:先取一个正整数dl(dl

思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第n个和第n-1个数,将小数放前,大数放后,然后比较第n-1个数和第n-2个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最小的数放到了最前。在第二趟:仍从第n个数开始比较,将小数放前,大数放后,一直比较到第二个数(第一的位置上已经是最小的),第二趟结束,在数第二的位置上得到一个新的最小数(其实在整个数列中是第二小的数)。如此下去,重复以上过程,直至最终完成排序。用二循环实现,外循环变量设i,内循环变量设为j。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识。 4、快速排序

思路:以第一个关键字K1为控制字,将[K1,K2..Kn]分成两个子区,使左区的所有关键字小于等于K1,右区所有关键字大于等于K1,在子区内数据尚处于无序状态。 将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它的左子区和右子区。

重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的处理,直到栈空。

4

排序综合

5、简单排序

思路:在n个记录中,用两重循环,外层循环i从第一个元素a[0]开始至最后一个 元素a[n-l],内层循环j从外层循环所值元素a[i]的下—个元素a[jl=a[i+l]开始至最后一个元素a[n-l]搜索,只要找到比a[i]小的元素,便与a[i]交换,如此重复执行操作,当外层循环完毕后,全部记录就排序完成了。

3.2整体设计方案

此课题是研究的是排序问题,为了直观和方便,画出流程图如下图1:

开始 调用欢迎界面 函数startface 选择操作项 产直希冒快简退 生接尔泡速单出 随插排排排选该 机入序序序择系 数 排函函函排统 序数 数 数 序 函 数 保存排序后文件 结束 图1 程序总流程图

通过流程图可以从中看出操作过程以及函数间的调用关系。

5

西华大学理学院课程设计说明书

3.3各种操作函数

根据模块的划分,将函数对模块进行实现,主要函数如下:

(1) 创建一个数组函数:int creat()

(2) 输出数组函数:void print(struct element a[],int n)

(3) 保存函数:void save(struct element a[],int n,char filename[]) (4) 直接插入排序函数:void insertsort(struct element a[],int n) (5) 希尔排序函数:void shellsort(struct element a[],int n) (6) 冒泡排序函数:void bublesort(struct element a[],int n)

(7) 快速排序分区处理:int partition(struct element a[],int low,int high) (8) 快速排序函数:void quicksort(struct element a[],int low,int high) (9) 简单排序函数:void selesort(struct element a[],int n)

3.4主函数

//==========通过该函数对其他函数的调用,实现系统功能 int _tmain(int argc, _TCHAR* argv[]) {

6

int num,c; bool flag=0; clock_t start,end;

char file1[300]=\直接插入排序.txt\; char file2[300]=\希尔排序.txt\; char file3[300]=\冒泡排序.txt\; char file4[300]=\快速排序.txt\; char file5[300]=\选择排序.txt\; while(1) {

menu();

printf(\请输入操作选项:\); scanf(\,&c);

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库题目3 - 排序综合 - 报告课件(2)在线全文阅读。

题目3 - 排序综合 - 报告课件(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1006398.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: