排序系统详细设计说明书newWord文件下载.docx
- 文档编号:22029737
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:153.90KB
排序系统详细设计说明书newWord文件下载.docx
《排序系统详细设计说明书newWord文件下载.docx》由会员分享,可在线阅读,更多相关《排序系统详细设计说明书newWord文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
1.4术语和缩略语6
1.5排序系统时序图6
1.6排序系统时序图6
1.7排序系统活动图7
1.8排序系统活动图描述7
2排序算法设计8
2.1算法的数据类型8
2.2算法详解8
2.3算法性能效率比较10
3排序系统模块概述11
3.1类图11
3.2类的成员方法13
4参考文献18
5附录18
1排序系统简介
1.1文档编写目的
编写本文档的目的是为了软件开发者对排序系统的运行环境、功能和性能有一个共同的理解,使本软件设计说明文档成为整个软件开发过程的指导,为编码提供方向和依据。
为快速的将数据进行排序,我们设计了排序系统,来帮助用户对用户想排序的数据进行排序。
1.2文档编写背景
本软件设计说明书是在《排序系统软件需求规格说明书》基础上编写的,完成需求分析、软件基础模块功能、排序系统设计制作,急需为开发人员的需求提供相应系统设计说明,以供进一步的修改。
也为软件开发与测试人员提供排序系统的整体框架,便于进一步设计开发。
1.3文档适用范围
本文档适用于开发人员。
●软件名称
本系统英文名称:
SortSystem
本系统英文简称:
SS
本系统中文名称:
●软件功能
参见《排序系统软件需求规格说明书》
●软件应用
1.4术语和缩略语
排序:
将一组“无序”的记录序列调整为“有序”的记录序列。
1.5排序系统时序图
图一系统时序图
1.6排序系统时序图
●getType是一个对象,用来获取用户选择的数据类型。
同时,该对象会对选择进行判断,返回判断信息。
●getData是一个对象,用来获取用户选择的排序数据。
同时,该对象会对数据进行判断并返回判断信息。
●sort是排序的对象,该对象负责对数据进行排序。
并调用printResult()方法。
●printResult()方法被sort对象调用,向用户返回排序结果。
1.7排序系统活动图
图二系统活动图
1.8排序系统活动图描述
●程序启动。
●系统接收用户输入的数据类型的代号。
●系统验证用户输入的代号是否合法。
合法则执行下一步,非法则返回重新接收输入。
●系统接收用户输入的要排序的数据。
●系统验证用户输入的要排序的数据是否合法,合法则执行下一步,非法则返回重新接收输入。
●系统接收用户输入的要使用的排序算法的代号。
●系统验证用户输入的代号是否合法,合法则执行下一步,非法则返回重新接收输入。
●系统执行排序算法。
●程序结束。
2排序算法设计
2.1算法的数据类型
数据类型
说明
整型(int类型)
基本数据类型,在内存中占4个字节(32位)取值范围为-2³
¹
~2³
-1
字符串(String类型)
字符串是常量;
它们的值在创建之后不能更改。
2.2算法详解
3.2.1希尔排序
基本思想
首先将待排序的元素分为多个子序列,使得每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序。
性能
希尔排序比冒泡排序快5倍,比插入排序大致快2倍。
希尔排序比起快速排序慢很多。
但是它相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合。
它对于数据量较小的数列重复排序是非常好的
3.2.2直接插入排序
每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;
直到待排序数据元素全部插入完为止。
空间效率:
仅用了一个辅助单元。
时间效率:
向有序表中逐个插入记录的操作,进行了n-1趟,每趟操作分为比较关键码和移动记录,而比较的次数和移动记录的次数取决于待排序列按关键码的初始排列。
最好情况下:
即待排序列已按关键码有序,每趟操作只需1次比较2次移动。
总比较次数:
n-1次。
总移动次数:
2(n-1)次。
最坏情况下:
即第j趟操作,插入记录需要同前面的j个记录进行j次关键码比较,移动记录的次数为j+2次。
平均情况下:
即第j趟操作,插入记录大约同前面的j/2个记录进行关键码比较,移动记录的次数为j/2+2次。
由此,直接插入排序的时间复杂度为O(n2)。
是一个稳定的排序方法。
3.2.3冒泡排序
设数组中存放了N个数据元素,循环进行N-1次如下排序:
第一次,依次比较相邻两个数据元素a[i]和a[i-1]的大小,如果a[i]大于a[i-1]则交换两个数据元素,否则不交换,这样,当作完N-1次比较后数值最大的数据元素将被放置在a[N-1]中。
第二次,数据元素排序的个数必须减1,即第二次只需比较N-1个数据,操作方法与第一次相同,这样当进行N-1次排序时,所有的数据都会按照从小到大的顺序全部排好。
有些待排序的数据元素序列已基本有序,这样,实际上并不需要全部执行完上述过程数据元素就已经全部排序就绪。
在算法设计中设计一个flag变量,flag变量用于标记本次排序过程是否有交换动作,若没有就表明数据元素集合已全部排好序,就可提前结束排序过程。
冒泡排序算法的最好情况是数据元素集合已全部排好序,这时循环N-1次,每次循环都因没有交换动作而退出,因此,冒泡排序算法最好情况的时间复杂度为O(n);
最坏情况是数据元素集合全部逆序存放,这时循环N-1次,比较次数为:
N*(N-1)/2,移动次数为:
3N*(N-1)/2,因此最坏情况的时间复杂度为O(n2),冒泡排序的空间复杂度为:
O
(1)。
3.2.4选择排序
1.每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
2.顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
1.比较次数O(n^2),n^2/2
交换次数O(n),n
2.交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。
3.2.5快速排序
快速排序的基本思想:
通过一个枢轴(pivot)元素将n个元素的序列分为左、右两个子序列Ll和Lr,其中子序列Ll中的原色均比枢轴元素小,而子序列Lr中的元素均比枢轴元素大,然后对左、右序列分别进行快速排序,在将左、右子序列排序后,则整个序列有序,而对左右子序列的排序过程直到子序列中包含一个元素时结束,此时左、右子序列由于只包含一个元素则自然有序。
快速排序的平均性能最好,但是若待排序序列初始时已按关键字有序或基本有序,则快速排序蜕化为冒泡排序,其时间复杂度为O(n2),为改进之,可以采用随机选择枢轴元素pivot的方法,具体做法是:
在待划分为序列中随机选择一个元素后与r[row]交换,再将r[row]作为枢轴元素,作如此改进之后将极大改进快速排序在序列有序或者基本有序时的性能,在排序元素个数n较大时,其运行过程中出现最坏情况的可能性可以认为不存在。
2.3算法性能效率比较
排序算法名称
平均时间
最差情形
稳定性
额外空间
备注
冒泡法排序
O(n²
)
稳定
O
(1)
n小时比较好
选择排序
不稳定
直接插入排序
大部分已排序时较好
希尔排序
O(nlogn)
根据所选分组
快速排序
n大时比较好
3排序系统模块概述
排序系统主要由2个模块组成,包括主界面设计模块和排序处理模块。
主界面设计模块,是直接展现给用户的,作为用户的角度,首先关心的就是界面。
用户与界面的交互会触发很多消息响应,事件处理模块就是来处理这些用户在界面上进行的操作。
排序处理模块,是系统的核心。
主要是根据用户输入的数据,进行排序。
3.1类图
3.1.1五种算法类图
图三五种排序算法类图
3.1.2排序接口图
图四排序接口图
3.1.3用户交互类类图
图五用户交互类类图
3.1.4系统工具类类图
图六系统工具类类图
3.2类的成员方法
3.2.1排序系统入口类
类名
com.bjc.sort.SortSys
类成员
sortIsort接口的一个对象
dataType数据类型编号
suSortUtil类的一个实例
data[]客户输入的数据
main()方法
功能:
接受客户输入的数据类型以及数据
参数:
无
判断用户的输入是否正确
正确:
调用doSort()
错误:
打印错误信息
doSort()方法
执行客户想要的排序算法
根据用户选择的排序算法调用相应的算法排序
3.2.2排序工具类
com.bjc.sort.SortUtil
checkInt(String[]data)方法
判断是否为纯整型数
data待判断的数组
返回值类型:
boolean
是纯整型数,返回true
否就返回false
checkString(String[]data)方法
判断是否为纯字符串
是纯字符串,返回true
3.2.3五种排序类总接口
接口名
com.bjc.isort.ISort
start(String[]data,intdataType)方法
排序类的接口,规范化
data待排序的数组
dataType数据的类型
具体实现参见五种排序
3.2.4插入排序算法类
com.bjc.sort.InsertSort
insertSortByInt(int[]data)方法
对整型数据进行排序
data进行排序的数组
内部:
Data[i]<
data[j]调用swap()方法
insertSortByString(String[]data)方法
对字符串数组进行排序
调用compareString()方法
返回值true:
交换data[i]与data[j]
swap(int[]data,inti,intj)方法
交换整型数组两个数的值
data待排序的整型数组
i数组的第i个位置
j数组的第j个位置
compareString(Stringdata[],intI,intj)方法
比较两个字符串的大小
data待排序的字符串的数组
j数组的第j个位置
data[i]<
data[j]返回true
data[i]>
data[j]返回false
convertStringToInt(Stringdata[])方法
把字符串数组转换成整型数组
int[]
data待排序的字符串数组
根据选择类型
调用insertSortByString()或者insertSortByInt()方法
dataType排序数组的类型
3.2.5冒泡排序算法类
com.bjc.sort.BubbleSort
bubbleSortByInt(int[]data)方法
bubbleSortByString(String[]data)方法
调用bubbleSortByString()或者bubbleSortByInt()方法
3.2.6选择排序算法类
com.bjc.sort.SelectSort
selectSortByInt(int[]data)方法
selectSortByString(String[]data)方法
调用selectSortByString()或者selectSortByInt()方法
3.2.7快速排序算法类
com.bjc.sort.QuickSort
quickSortByInt(int[]data)方法
quickSortByString(String[]data)方法
调用quickSortByString()或者quickSortByInt()方法
3.2.8希尔排序算法类
com.bjc.sort.ShellSort
shellSortByInt(int[]data)方法
shellSortByString(String[]data)方法
调用shellSortByString()或者shellSortByInt()方法
4参考文献
5附录
图七排序系统计划
图八甘特图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 系统 详细 设计 说明书 new