欢迎来到天天文库
浏览记录
ID:35617495
大小:202.00 KB
页数:24页
时间:2019-04-02
《数据结构课程设计--排序的需求分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、排序的需求分析一需求分析1.1问题描述 此次的任务要求是输入N个随机整数,对这些数进行多种方法进行排序。(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。 约束:程序可由用户自行设定排序数的个数,但排序数具体值需要由计算机生成,然后用三种以上的排序方法对随机数组进行排序,每一种排序方法执行后需统计出数据移动次数以判断排序方法的对比随机数组的执行优劣性。另:用户自行算出每一种排序方法的时间复杂度与空间复杂度。 1.2基本要求(1)输入的形式和输入值的范围;设定的随机数据的范围为0~100,用户自定义随机数的个数n,类型均为整形。(2)输出的形式;程序是
2、以一个完整的有序数组来进行输出。构建菜单,为每种排序方法设定一个选项数字。用户可根据需要选择不同的排序方法。系统会为每种排序方法分配一个组随机数的副本,每次排序不影响随机数的次序,可重复排序,并计算其比表次数,方便分析其时间、空间复杂度,排好序后悔通过输出函数输出。(3)程序所达到的功能:①.将一个无序数组进行排序随机生成N个随机整数,对这些数进行多种方法进行排序。分别采用以下方法实现上述问题求解(可采用的方法有插入排序、希尔排序、起 泡排序、快速排序、选择排序、堆排序、归并排序)②.通过移动次数来判断排序方法适合哪种类型的数组。二概要设计2.1.数据结构本题程序是对一组随机数进行排序,并为
3、用到过多数据结构及数据类型,仅用到数组的数据类型,即表结构。2.2.数据模块2.3.各模块之间的调用关系以及算法设计main()主体是主函数menu()主函数调用菜单函数getdate()菜单函数首先创建一组随机数Output()输出函数输出随机数菜单选项:case1:InsSort()直接插入排序case2:bubble()冒泡排序case3:HeapSort()堆排序case4:ShellInsort()希尔排序case5:QuickSort()快速排序case6:SelectSort()选择排序case0:退出程序或重新创建数组 case1直接插入排序case2冒泡排序case3堆排序
4、case4希尔排序case5快速排序case6选择排序case0重建或退出程序主函数Main()菜单menu()获取随机数组getdate()程序流程图如下结束Y输出r[Length]Y?输入字母Y
5、
6、N6543210开始输入Length创建随机数组r[Length]输入选项用于多重选择NNYi<=Length?i++r[0]r[j+1]r[0]1?YN1lastchage1jr[j+1]7、?delta[i-1]==1?r[0]r[j+delta]Nj>0&&r[0]8、os-1)QKSort(r,pos+1,high)low=p?]Yhigh-1highNr[low]r[high]N38lengthnni8lengthnn/2i9i-1i输出RR[1]R[i]9i>=2?NYi-1ii>=1NYXR[i]j<=length&&!finished9R[k]xqi2*ijFalsefinishedR[j]R[i]ji2*ijx>=R[j]Nj9、me(0));printf("请输入数组的长度:");scanf("%d",&length);1=>iIfi<=lengthTheni++{r[i]=rand()%100;R[i]=r[i];printf(" ");}}直接插入程序模块:begininputr[]andlength2=>iwhilei<=length{r[i]=>r[0]i-1=>jwhiler[0]r[j+I]j-
7、?delta[i-1]==1?r[0]r[j+delta]Nj>0&&r[0]8、os-1)QKSort(r,pos+1,high)low=p?]Yhigh-1highNr[low]r[high]N38lengthnni8lengthnn/2i9i-1i输出RR[1]R[i]9i>=2?NYi-1ii>=1NYXR[i]j<=length&&!finished9R[k]xqi2*ijFalsefinishedR[j]R[i]ji2*ijx>=R[j]Nj9、me(0));printf("请输入数组的长度:");scanf("%d",&length);1=>iIfi<=lengthTheni++{r[i]=rand()%100;R[i]=r[i];printf(" ");}}直接插入程序模块:begininputr[]andlength2=>iwhilei<=length{r[i]=>r[0]i-1=>jwhiler[0]r[j+I]j-
8、os-1)QKSort(r,pos+1,high)low=p?]Yhigh-1highNr[low]r[high]N38lengthnni8lengthnn/2i9i-1i输出RR[1]R[i]9i>=2?NYi-1ii>=1NYXR[i]j<=length&&!finished9R[k]xqi2*ijFalsefinishedR[j]R[i]ji2*ijx>=R[j]Nj9、me(0));printf("请输入数组的长度:");scanf("%d",&length);1=>iIfi<=lengthTheni++{r[i]=rand()%100;R[i]=r[i];printf(" ");}}直接插入程序模块:begininputr[]andlength2=>iwhilei<=length{r[i]=>r[0]i-1=>jwhiler[0]r[j+I]j-
9、me(0));printf("请输入数组的长度:");scanf("%d",&length);1=>iIfi<=lengthTheni++{r[i]=rand()%100;R[i]=r[i];printf(" ");}}直接插入程序模块:begininputr[]andlength2=>iwhilei<=length{r[i]=>r[0]i-1=>jwhiler[0]r[j+I]j-
此文档下载收益归作者所有