十大排序法综合排序的设计和实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十大排序法对大量数据综合排序的设计和实现

文档信息

开发小组:

组长:于微

成员:郑鸿、张雪莹、杨宝英

单位:软件设计工作室文档类型:软件开发用技术文档当前版本:Microsoft Word

作者:杨宝英、郑鸿

完成时间:2010年10月10日软件信息

系统名称:十大排序法对大量数据综合排序

运行环境Windows Seven 环境下Visual C+ + 6.0版本

参与编写:于微、郑鸿、张雪莹、杨宝英

日期:2010年10月5号-2010年10月10号

系统简介:系统面向大众人群,囊括了起泡排序、插入排序、二分排序、选择排序、希尔排序、快速排序、堆排序、桶排序、基数排序、

二路归并排序这十个常用排序,此系统可对一百万个随机数进

行综合排序,计算各排序时间,以比较各排序工作的效率。

一、序言 (3)

二、需求分析说明书 (3)

2.1系统介绍 (3)

2.2系统面向的用户群体 (3)

2.3系统的功能性需求 (3)

2.4系统的非功能性需求 (4)

2.4.1用户界面需求 (4)

2.4.2软硬件环境需求 (4)

三、可行性分析报告 (4)

四、概要设计 (5)

五、详细设计 (5)

5.1主函数于各模块的关系 (5)

5.2各模块功能函数 (6)

5.2.1基数排序函数的实现 (6)

5.2.2起泡排序函数的实现 (8)

5.2.3选择排序函数的实现 (9)

5.2.4插入排序函数的实现 (10)

5.2.5希尔排序函数的实现 (11)

5.2.6二分排序函数的实现 (11)

5.2.7快速排序函数的实现 (13)

5.2.8桶排序函数的实现 (14)

5.2.9堆排序函数的实现 (16)

5.2.10二路归并排序函数的实现 (18)

5.2.11过滤重复数据的实现 (20)

六、使用说明 (20)

七、心得体会 (23)

参考资料 (23)

随着社会的发展,人们迎来了信息时代,各种信息日益丰富,需要处理的信息也急剧增加,对数据的排序正是这些处理中的重要一部分。

排序讲究效率,而历来的排序算法种类繁多,各有优劣,难以比较。所以本次设计运用了人们常用的十大排序算法对一百万个随机数据进行综合排序,以便比较出各种算法的优劣。选择出几种效率较高的算法应用在实际应用中,使计算机的运行效率更高,更加准确,更加科学化和正规化。

二、需求分析说明书

2.1系统介绍

本系统定位于大众人群,系统开发平台为Windows Seven,程序设计语言为C++,程序的运行环境为Visual C+ + 6.0。

Visual C+ + 6.0版本主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。

2.2系统面向的用户群体

系统面向的用户群体为研究排序算法优劣及需要对数据进行排序的人群。或是对排序算法感兴趣的大众人群。

2.3系统的功能性需求

2.3.1数据排序的功能

系统提供了基数排序、起泡排序、选择排序、插入排序、希尔排序、二分排序、快速排序、桶排序、堆排序、二路归并排序这十大常用排序。用户可根据自身需要在键盘上输入各排序算法对应的字符,系统即可实现这些算法的排序,并将排序结果显示在系统界面上。

2.3.2大量数据的导入

系统为用户提供大量可供排序的数据。运行程序时,系统将随机产生一百万个数字以便于用户使用。导入数据应快速稳定。

2.3.2排序时间的自行显示

为了比较各个排序算法的效率,系统界面除了显示排序结果以外还会显示所使用的算法的排序时间,以秒为单位,便于用户对比。

2.4系统的非功能性需求

2.4.1用户界面需求

简洁、易用、易懂,美观、大方、标准,具备一定的兼容性。、

2.4.2软硬件环境需求

软件:程序代码在操作系统windows95及以后版本VC++6.0开发环境中编译。

硬件:硬盘 2GB以上。

三、可行性分析报告

排序算法在我们日常编写程序中经常会用到,特别是编写信息管理系统之类的程序更是运用得非常广泛,因此对于这十个常用的排序算法都比较熟悉。通过相关书籍的阅读和网上信息的查询可以很快掌握这些算法。小组一共四个人,经过合理的分工,从十月五号到十月十号,这六天时间里可以完成代码的编写和程序相关功能的实现以及文档写作这些工作。

再加上工作室提供了很好的编程环境和网络支持,因而该系统的实现是可行的。

四、概要设计

4.1系统总体结构图

图4.1

五、详细设计

5.1主函数与各模块的关系

图5.1

程序运行时,主函数进行初始化操作,从系统导入一百万个随机数。通过switch-case语句结构对用户指令进行辨别,根据用户指令调用相应功能模块函数。

5.2各模块功能函数

5.2.1基数排序函数的实现

函数声明:void r_sort(int *dat,int n);

基数排序是将数字按位数划分出n个关键字,每次针对一个关键字进行排序,然后针对排序后的序列进行下一个关键字的排序,循环至所有关键字都使用过则排序完成。

代码实现如下:

int maxbit(int *dat,int n)//求最大位数,n个元素

{

int i,tmp,bit_num=0,t;

for(i=0;i

{

t=0;

tmp=dat[i];

while(tmp>0)

{

t++;

tmp/=10;

}

if(bit_num

bit_num=t;

}

return bit_num;

}

void r_sort(int *dat,int n)

{

相关文档
最新文档