程序设计大作业——排序.docVIP

  • 17
  • 0
  • 约4.48千字
  • 约 10页
  • 2017-06-02 发布于河南
  • 举报
程序设计大作业——排序

《程序设计基础》大作业 姓 名: 张彬 学 号: 1001051135 班 级: 信管10-01 成 绩: 信息科学与工程学院 20011年月日 程序设计基础大作业 数字的排列以及其排序过程的演示 1.1 需求陈述: 数字排列方法是多样的,如插入法,冒泡法,选择排序,shell排序等;而这些排序方法的思路大不相同。因此本程序是将数字的排序过程以图像的方式展示出来,以方便他人学习。 1.2 需求分析 : 1.2.1:功能需求: 项目 功能 组成 备注 Order 主函数 不同系统的选择选择需要的排序方法 在主函数每一次选择时都允许多次选择错误,只要没有输入正确的选项就会一直执行输入操作 数组的产生方式 选择需要的排序方法 选择错误的检测 子函数的调用 子函数(冒泡 ,选择) 相邻的数字依次比较 根据大小进行交换 循环并记录交换结果 交换过程用图形展示 子函数(插入) 数字比较 数字移位 数字插入 图形展示 子函数 (shell) 将数组元素多次分组 每一次分组后都进行比较交换 数字每次输出,并提示分组情况及比较情况 1.3 设计思想: 1 、函数库调用 #includestdio.h 程序内容的输入输出 #includetime.h 实现时间控制 #includestdlib.h 取得随机数 #includewindows.h 实现清屏 2、子函数的设计 A、冒泡排序子函数 声明:int maopao( int *a,int n) 功能:用冒泡法对数组中的元素进行排列,并将其中的比较,以及交换的次数输出。最终完成比较,以递增的顺序将排列好的数组输出。 实现思路:由第一个数开始,每个数依次同其下一个数字比较并根据大小进行交换。根据数组的大小确定循环次数。最终实现数组中的元素排序。其中,使数组中的元素以图像的形式展示出来。并对正在比较的元素用特殊符号标记。用+组成正在比较的数字,用-组成其他数字。 B、选择法子函数 声明:int xuanze(int *a,int n) 功能:用选择排序法对数组中的元素进行排列,并将其中的比较,以及交换的次数输出。最终完成比较,以递增的顺序将排列好的数组输出。 实现思路:由第一个数开始,第一个数依次与所有数比较。找到最小数,放在第一位。再从第二个数开始进行比较找到剩下数中最小数。以此类推,从而实现对所有的数字排序。 C、插入法子函数 声明:int charu(int *a,int n) 功能:用插入排序法对数组中的元素进行排列,并将其中的比较,以及插入的次数输出。最终完成比较,以递增的顺序将排列好的数组输出。 实现思路:每个数依次和后面的数比较,根据大小关系,决定所要插入的位置,要插入位置及以后的数字分别后移一位,再用要插入的数进行赋值。 D、shell排序子函数 声明:void shell(int *a,int n) 功能:在本程序中,选用了元素的个数的一半作为分组的依据。首先将数组分组并用#显示出分组情况,再在每一组之间将相同位置的数字进行比较对换,显示出第几组与第几组的第几个元素在进行比较对换,以后进行多次分组,每一次都按照相同的方法进行比较对换,当每组中的元素成为壹时,进行最后一轮比较对换,再将最后的数组输出 3、主函数的设计: 主函数中运用switch语句使用户对不同情况做出选择,运用while语句作为错误检测,当选择错误时可以再次选择,在屏幕菜单输出时运用空格是屏幕美观化。 1.4系统测试显示及思想 1.41、进入界面; 注释:在此完成对系统的选择(由于检测需求,需要在不同系统中运行。) 注释:要求先输入要排序的数组中个数;此选项用简单的输出和输入完成。 注释:输入数组是用一个for循环输入,而产生随机数则是用时间做种子,再对数字取余得到 当选择自主输入数字时,所显示的为当前界面。 注释:简单的switch语句,中间没有加了default。 Default只能提示一次,如果用循环提示出错则可以多次改正,并提示。 如果输入有误; 1.42、冒泡法运行时的界面; 注释:比较次数和交换次数,用两个变量就可以,只是比较次数放在双重循环之后,而交换次数放在if判断语句之后。 冒泡结束时; 1.43、选择排序运行; 选择结束时; 1.44、插入法运行 ;不需要插入时 当需要插入时(括号中为刚插入的数字); 插入法运行结束时 1.45、shell排序法运行时 排序过程中输出每组的个数,正在比较的组数以及组中的第几个数正在比较 当单个数字为一组时,表示函数即将运行完

文档评论(0)

1亿VIP精品文档

相关文档