数据结构课程设计-排序综合报告.doc_第1页
数据结构课程设计-排序综合报告.doc_第2页
数据结构课程设计-排序综合报告.doc_第3页
数据结构课程设计-排序综合报告.doc_第4页
数据结构课程设计-排序综合报告.doc_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学与计算机学院 课程设计说明书 课 程 名 称 数据结构 课程设计 课 程 代 码 8404181 题 目 排序综合 年级 专业 班 2009 级软件工程四班 学 生 姓 名 学 号 开 始 时 间 2011 年 06 月 20 日 完 成 时 间 2011 年 07 月 03 日 课程设计成绩 学习态度及平 时成绩 30 技术水平与实际 能力 20 创新 5 说明书撰写质量 45 总 分 100 指导教师签名 年 月 摘摘 要要 排序 sorting 是计算机程序设计的一种重要操作 他的功能是将一组任意顺序 数据元素 记录 根据某一个 或几个 关键字按一定的顺序重新排列成为有序的序 列 由于待排序的记录数量不同 使得排序过程中涉及的存储器的不同 可将排序方 法分为两大类 一类是内部排序 指的是待排序的记录存放在计算机随机存储器中进 行的排序过程 另一类是外部排序 指的是待排序记录的数量很大 以致内存一次不 能容纳全部记录 在排序过程中尚需要对外存进行访问的排序过程 内部排序又分为 插入排序 快速排序 选择排序 归并排序和基数排序 其中 插入排序又分为 直接插入排序 其他插入排序和希尔排序 选择排序分为 简单选 择排序 树形选择排序和堆排序 基数排序分为 多关键字排序和链式基数排序 本次课程设计就是内部排序中的几个常用排序方法 分析了排序的实质 排序的 应用 排序的分类 利用 C 语言采用数组存储结构编程实现了本排序综合系统 该系 统包含了几种常见的排序方法 有直接插入排序 希尔排序 冒泡排序 非递归的快 速排序 递归的快速排序 简单排序 堆排序 关键字关键字 内部排序 外部排序 排序 重新排列 关键字 目目 录录 1 需求分析需求分析 1 1 1 任务与分析任务与分析 1 1 2 功能模块的划分功能模块的划分 1 1 2 1 输入模块 1 1 2 2 选择排序方法模块 1 1 2 3 输出模块 1 1 3 排序模块分析排序模块分析 2 1 3 1 直接插入排序 2 1 3 2 希尔排序 2 1 3 3 冒泡排序 2 1 3 4 快速排序 递归和非递归 2 1 3 5 简单排序 3 1 3 6 堆排序 3 1 4 系统需求分析规格说明书系统需求分析规格说明书 3 2 开发及运行平台开发及运行平台 4 2 1 WINDOWS操作系统操作系统 4 2 2 VC 6 0 4 3 概要设计概要设计 4 3 1 程序结构框图程序结构框图 4 3 2 程序流程图程序流程图 5 3 3 抽象数据类型定义抽象数据类型定义 5 3 4 各种操作函数 各种操作函数 6 3 5 主函数主函数 6 4 详细设计详细设计 7 4 1 数据类型定义数据类型定义 7 4 2 主要模块内部设计主要模块内部设计 7 4 2 1 模块 1 直接插入排序模块设计 7 4 2 2 模块 2 希尔排序模块设计 7 4 2 3 模块 3 冒泡排序模块设计 8 4 2 4 模块 4 非递归快排模块设计 9 4 2 5 模块 5 递归快排模块设计 10 4 2 6 模块 6 简单排序模块设计 10 4 2 7 模块 7 堆排序模块设计 10 5 调试分析调试分析 12 5 1 调试过程调试过程 12 5 2 性能分析性能分析 12 6 测试分析测试分析 13 6 1 测试用例测试用例 13 6 2 测试结果测试结果 13 7 结论结论 15 参考文献参考文献 16 附附 录录 17 1 1 1 需需求求分分析析 1 11 1 任务与分析任务与分析 任务 机函数产生 N 个随机整数 20000 以上 对这些数进行多种方法进行排序 要求 1 至少采用三种方法实现上述问题求解 提示 可采用的方法有插入排序 希尔排序 起泡排序 快速排序 选择排序 堆排序 归并排序 并把排序后的 结果保存在不同的文件中 2 统计每一种排序方法的性能 以上机运行程序所花费的时间为准进行对比 找出其中两种较快的方法 分析 前面分析了排序的种类以及过程 因此 本系统实现了几种常用的排序方法 包括 直接插入排序 希尔排序 冒泡排序 非递归的快速排序 递归的快速排 序 简单排序 堆排序 1 21 2 功能模块的划分功能模块的划分 1 2 11 2 1 输入模块输入模块 利用随机函数产生 N 个数 20000 以上 产生的数据个数有用户自己输入 1 2 21 2 2 选择排序方法模块选择排序方法模块 在菜单中通过键入相应的选项编号来选择采用何种算法排序 包括的排序算法有 直接插入排序 希尔排序 冒泡排序 非递归的快速排序 递归的快速排序 简单排 序 堆排序 1 2 31 2 3 输出模块输出模块 输出排序前的 或者排序后的数据元素到屏幕上显示 并且输出一某一种算法排 序后的数据元素到文件中保存 2 1 31 3 排序模块分析排序模块分析 1 3 11 3 1 直接插入排序直接插入排序 思路 设有一组关键字 K1 K2 Kn 排序开始变认为 K1 是一个有序的序列 让 K2 插入到表长为 1 的有序序列 使之成为一个表长为 2 的有序序列 让 K3 插入到表 长为 2 的有序序列 使之成为一个表长为 3 的有序序列 依次类推 最后让 Kn 插入上述表 长为 n 1 的有序序列 得到一个表长为 n 的有序序列 1 3 21 3 2 希尔排序希尔排序 思路 先取一个正整数 d1 d1 n 把全部记录分成 d1 个组 所有距离为 d1 的倍数的 记录看成是一组 然后在各组内进行插入排序 然后取 d2 d2 1 即所有记录成为一个组为此 一般选 d1 约为 n 2 d2 为 d1 2 di 1 1 3 31 3 3 冒泡排序冒泡排序 思路 依次比较相邻的两个数 将小数放在前面 大数放在后面 即在第一趟 首先比较第 1 个和第 2 个数 将小数放前 大数放后 然后比较第 2 个数和第 3 个数 将小数放前 大数放后 如此继续 直至比较最后两个数 将小数放前 大数放后 至此第一趟结束 将最大的数放到了最后 在第二趟 仍从第一对数开始比较 因为 可能由于第 2 个数和第 3 个数的交换 使得第 1 个数不再小于第 2 个数 将小数放前 大数放后 一直比较到倒数第二个数 倒数第一的位置上已经是最大的 第二趟结束 在倒数第二的位置上得到一个新的最大数 其实在整个数列中是第二大的数 如此下 去 重复以上过程 直至最终完成排序 用二重循环实现 外循环变量设为 i 内循环 变量设为 j 外循环重复 9 次 内循环依次重复 9 8 1 次 每次进行比较的两个 元素都是与内循环 j 有关的 它们可以分别用 a j 和 a j 1 标识 i 的值依次为 1 2 9 对于每一个 i j 的值依次为 1 2 10 i 1 3 41 3 4 快速排序 递归和非递归 快速排序 递归和非递归 思路 以第一个关键字 K1 为控制字 将 K1 K2 Kn 分成两个子区 使左区的 有关键字小于等于 K1 右区所有关键字大于等于 K1 最后控制居两个子区中间的适 当位置 在子区内数据尚处于无序状态 将右区首 尾指针保存入栈 对左区进行与第 1 步相类似的处理 又得到它的 3 左子区和右子区 控制字区中 重复第 1 2 步 直到左区处理完毕 然后退栈对一个个子区进行相类似的 处理 直到栈空 分区处理函数 hoare 思路 首先用两个指针 i j 分别指向首 尾两个关键字 i 1 j 8 如对 46 56 14 43 95 10 19 72 第一个关键字 46 作为控制字 该关键字所属的 记录另存储在一个 x 变量中 从文件右端元素 r j key 开始与控制字 x key 相比较 当 r j key 大于等于 x key 时 r j 不移动 修改指针 j j 直到 r j key x key 把记录 r j 移动到文件左边 i 所指向的位置 然后在文件左边修改 i 指针 i 让 r i key 与 x key 相比较 当 r i key 小于等于 x key 时 r i 不移动 修改指针 i i 直到 r i key x key 把记录 r i 移动到文件右边 j 所指向的位置 然后在文件右边修改 j 指针 j 重复上面的步骤 1 3 51 3 5 简单排序简单排序 思路 在 n 个记录中 用两重循环 外层循环 i 从第一个元素 a 0 开始至最后一个 元素 a n 1 内层循环 j 从外层循环所值元素 a i 的下一个元素 a j a i 1 开始至最后一 个元素 a n 1 搜索 只要找到比 a i 小的元素 便与 a i 交换 如此重复执行操作 当 外层循环完毕后 全部记录就排序完成了 1 3 61 3 6 堆排序堆排序 思路 把 n 个记录存于向量 r 之中 把它看成完全二叉树 此时关键字序列不一 定满足堆的关系 堆排序大体分为两步处理 初建堆 从堆的定义出发 当 i 1 2 2 n 时应满足 ki k2i 和 ki k2i 1 所以先取 i n 2 它一定是第 n 个结点的双亲编号 将以 i 结点为根的子树调整为堆 然 后令 i i 1 将以不结点为根的子树调整为堆 此时可能会反复调整某些结点 直到 i 1 为止 堆初步建成 堆排序 首先输出堆顶元素 一般是最小值 让堆中最后一个元素上移到原堆顶 位置 然后恢复堆 因为经过第一步输出堆顶元素的操作后 往往破坏了堆关系 所 以要恢复堆 重复执行输出堆顶元素 堆尾元素上移和恢复堆的步骤 1 41 4 系统需求分析规格说明书系统需求分析规格说明书 这是一个关于排序的综合系统 该系统包含就平时记录操作中比较常见的几种排 序方法 其中包括 直接插入排序 希尔排序 冒泡排序 非递归的快速排序 递归 4 的快速排序 简单排序 堆排序 应用该系统可以完成数据记录的排序操作 对不同 的数据量 不同的数据结构可以采用不同的排序方法 2 2 开开发发 及及运运行行平平台台 2 12 1 windowswindows 操作系统操作系统 2 22 2 VC 6 0VC 6 0 本系统在上述环境中设计实现 并且编译通过 能正常运行 3 3 概概要要 设设计计 3 13 1 程序结构框图程序结构框图 排序综合系统 退 出 非 递 归 快 排 函 数 冒 泡 排 序 函 数 堆 排 序 函 数 简 单 排 序 函 数 递 归 快 排 函 数 希 尔 排 序 函 数 直 接 插 入 排 序 函 数 产 生 随 机 数 函 数 图 1 程序结构框图 5 3 23 2 程序流程图程序流程图 开始 调用欢迎界面函 数startface 选择操作项 第一次应先产生随机 数 退 出 非 递 归 快 排 冒 泡 排 序 堆 排 序 简 单 排 序 递 归 快 排 希 尔 排 序 直 接 插 入 排 序 产 生 随 机 数 结束 保存排序后文件 图 2 程序流程图 3 33 3 抽象数据类型定义抽象数据类型定义 ADT SORT 数据对象 D 随机产生的 num 用户输入 个数据元素 基本操作 int creat 产生随机数 void insert sort struct element a int n 直接插入排序 void shell sort struct element a int n 希尔排序 void bubble sort struct element a int n 冒泡排序 int hoare struct element a int l int h 快排的分区处理 void quick sort 1 struct element a int n 非递归快排 void quick sort 2 struct element a int l int h 递归快排 void jiandan sort struct element a int n 简单排序 void heap struct element a int i int m 堆调整 6 void heapsort struct element a int n 堆排序 ADT SORT 3 43 4 各种操作函数 各种操作函数 1 创建一个数组函数 int creat 2 输出数组函数 void print struct element a int n 3 保存函数 void save struct element a SIZE int n char fileName 4 直接插入排序函数 void insert sort struct element a int n 5 希尔排序函数 void shell struct element a int n 6 冒泡排序函数 void bubble sort struct element a int n 7 快速排序分区处理函数 int hoare struct element a int l int h 8 非递归的快速排序函数 void quick sort 1 struct element a int n 9 递归的快速排序函数 oid quick sort 2 struct element a int l int h 10 简单排序函数 void jiandan sort struct element a int n 11 调整堆的函数 void heap struct element a int i int m 12 堆排序函数 void heapsort struct element a int n 13 时间函数 start clock end clock 3 53 5 主函数主函数 Void main 显示菜单 While 1 接受命令 选择要执行的操作 处理命令 输出结果 7 4 4 详详细细设设计计 4 14 1 数据类型定义数据类型定义 define SIZE 1000000 struct element int key list SIZE 4 24 2 主要模块内部设计主要模块内部设计 4 2 14 2 1 模块模块 1 1 直接插入排序模块设计直接插入排序模块设计 模块算法 void insert sort struct element a int n for i 1 i 0 i 元素后移一个位置 0 号位置作为监视哨 a i a i 1 k n 2 步长 while k 1 8 for i k 1 ia 0 key j j k a j k a 0 k k 2 更新步长 for i 0 i n i 元素前移一个位置 a i a i 1 printf 希尔排序完成 n 4 2 34 2 3 模块模块 3 3 冒泡排序模块设计冒泡排序模块设计 模块算法 void bubble sort struct element a int n for i 0 i n i flag 0 flag 初始化 flag 标志变量 判断是否需要循环 for j 0 j a j 1 key 满足条件交换元素 a i a j flag 1 if flag 0 break printf 冒泡排序完成 n 9 4 2 44 2 4 模块模块 4 4 非递归快排模块设计非递归快排模块设计 模块算法 int hoare struct element a int l int h 分区处理函数 i l j h x a i 初始化 do while i x key 从后向前搜索第一个小于 x 的元素 j if i j a i a j i while i j if i j i j 则将 a i 复制给 a j j 向前移动一个位置 a j a i j while i j a i x return i 非递归的快速排序 void quick sort 1 struct element a int n 非递归的快速排序 int s 20 2 l 0 h n 1 tag 1 top 0 初始化 do while l h i hoare a l h 分区处理 top s top 0 i 1 s top 1 h h h 1 if top 0 tag 0 处理完标志 10 else l s top 0 h s top 1 top while tag 1 printf 非递归快排完成 n 4 2 54 2 5 模块模块 5 5 递归快排模块设计递归快排模块设计 模块算法 void quick sort 2 struct element a int l int h 递归的快速排序 if l h i hoare a l h 划为两个区 quick sort 2 a l i 1 对左分区快速排序 quick sort 2 a i 1 h 对右分区快速排序 4 2 64 2 6 模块模块 6 6 简单排序模块设计简单排序模块设计 模块算法 void jiandan sort struct element a int n for i 0 i n i for j i 1 j a j key 满足条件 交换元素 a i a j printf 简单排序完成 n 4 2 74 2 7 模块模块 7 7 堆排序模块设计堆排序模块设计 模块算法 调整堆的函数 void heap struct element a int i int m 11 i 是根结点编号 m 是以 i 为根的子树的最后一个结点编号 x a i 保存记录内容 j 2 i j 为左孩子编号 while j m if ja j 1 key 当结点 i 有左 右两个孩子时 j 取关键较小 的孩子编号 j if a j keym 以便结束循环 a i x 堆排序的主体函数 void heapsort struct element a int n for i n i 0 i 全部元素后移一位 a i a i 1 for i n 2 i 1 i heap a i n 堆调整 for v n v 2 v a 1 a v 堆顶堆尾元素交换 heap a 1 v 1 这次比上次少处理一个记录 for i 0 i n i 元素前移一位 a i a i 1 for i 0 i n 2 i 交换元素 a i a n i 1 printf 堆排序完成 n 12 5 5 调调试试分分析析 5 15 1 调试过程调试过程 根据编译的报错和告警提示 改正程序中的语法和语义错误 是程序能运行 在 根据测试分析算法的正确与否调试程序中的排序算法 使每种排序算法能正确执行操 作 5 25 2 性能分析性能分析 5 2 1 insertion sort 排序算法分析 该算法的时间复杂度为 O n n 直接插入排序是稳定的排序方法 当 n 值较小时 n 和 n2的差别也较小 即直接插入排序的最好时间复杂度 O n 和最坏时间复杂度 0 n2 差 别不大 5 2 2 shell 排序算法分析 Shell 排序算法的时间复杂度分析比较复杂 实际所需的时间取决于各次排序时增 量的个数和增量的取值 当 n 较大时 比较和移动的次数约在 nl 25 到 1 6n1 25 之间 由于 Shell 排序算法是按增量分组进行的排序 所以 Shell 排序算法是一种不稳定的 排序算法 5 2 3 bubble 排序算法分析 这是最原始 也是众所周知的最慢的算法了 它的名字的由来是它的工作看起来 想冒泡 该算法的时间复杂度为 O n n 5 2 4 quick 排序算法分析 快速排序主体算法时间运算约为 O log2n 划分子区函数运算量约为 O n 所总 时复杂度为 O nlog2n 因为快速排序的记录移动次数不大于比较的次数 所以快速排 序的最坏时间复杂度应为 0 n2 最好时间复杂度为 O nlgn 5 3 5 简单排序算法分析 从算法中用了两重循环可以看出 该算法的时间复杂度为 O n n 5 3 6 heapsort 排序算法分析 13 堆排序中 heap 算法的时间复杂度与堆所对应的完全二叉树的深度 log2n 1 相关 而 heapsort 中对 heap 的调用数量级为 n 所以整个堆排序的时间复杂度为 O nlog2n 堆排序是不稳定的 6 6 测测试试 分分析析 6 16 1 测试用例测试用例 不需要人工输入任何测试数据 由系统随机产生数据 产生的个数由用户输入 用随机函数产生的 20 个随机作为测试用例 图 3 随机函数产生随机数截图 6 26 2 测试结果测试结果 图 4 直接插入排序截图 14 图 5 希尔排序截图 图 6 冒泡排序截图 图 7 非递归快排截图 图 8 递归快排截图 图 9 简单排序截图 15 图 10 堆排序截图 7 7 结结论论 通过这次课程设计的学习让我学会了许多 让我对我们的专业知识有了很大 理解 我对专业的课程有了初步的认识 在这次课程设计中 独立完成了在数组存储结构下的每种排序算法 排序算法共 有六个 插入排序 希尔排序 冒泡排序 快速排序 选择排序 堆排序 同时也实 现了随机数的生成 并把排序后的结果保存在不同的文件中 虽然在算法完成的过程 中也在网上查阅了一些资料 但对这次课程设计的成果还是非常满意的 这次的课程设计还有很多不足之处 如数组存储结构中的堆排序算法 当排序个 数过多时 就会等待很长时间 可能是调用的函数过多的原因造成的 但排序是正确 的 由于时间限制 只在课程设计快结束时完成了产生随机文件这部分 我想以后有 时间再来完成它 同时在完成这个课程设计后 我也学到了很多知识 并能熟练的掌握他们了 熟 练的撑握了 C 语言的文件读写操作 撑握了每种排序算法的基本思想 并学会了编写 程序的一般步骤 思考问题 写出解决方案 写出伪代码 完成代码 调试程序 不 像以前那样开始就直接写代码 所以 这次的课程设计我学会了很多 不光让我认识了本专业知识 还让我学了 一定的心境 那就是做事情的时候即使不会做也不能慌张 要慢慢放下心来 不要光 想自己怎么 怎么不会了 不要去想不会 而是冷下心来慢慢思考 思考 这样你就 会有了思虑的 16 参参考考文文献献 1 严蔚敏等编著 数据结构 C 语言版 北京 清华大学出版社 2003 2 严蔚敏等编著 数据结构题集 C 语言版 北京 清华大学出版社 2003 3 李春葆等编著 数据结构教程 C 语言版 北京 清华大学出版社 2006 4 朱立华等编著 C 语言程序设计 北京 人民邮电出版社 2009 17 附附 录录 附录 1 源程序清单 include include include define SIZE 1000000 定义数据类型结构体 关键字定义在结构体中 方便以后的代码重用 struct element int key list SIZE 创建一个数组 int creat int i i 循环控制 int num num 记录元素的个数 printf 请输入元素个数 scanf d if num 999999 printf 输入超界 n return 0 for i 0 i num i 循环产生 num 个随机数 list i key rand 10000 return num 输出数组 void print struct element a int n int i for i 0 i n i 循环输出 printf 5d a i key printf n 保存到文件 void save struct element a int n char fileName int m wr 0 写入 TXT 文件变量 FILE fp if fp fopen fileName w NULL printf File writer error n for int m 0 m n m m wr a m key fprintf fp d m wr 写入 TXT 中 fclose fp 18 直接插入排序 void insert sort struct element a int n int i j 循环控制变量 struct element next 临时存放空间 for i 1 i 0 i 元素后移一个位置 0 号位置作为监视哨 a i a i 1 k n 2 步长 while k 1 for i k 1 ia 0 key j j k a j k a 0 k k 2 for i 0 i n i 元素前移一个位置 a i a i 1 printf 希尔排序完成 n 冒泡排序 void bubble sort struct element a int n int i j flag flag 标志变量 判断是否需要循环 struct element temp for i 0 i n i flag 0 初始化 for j 0 j a j 1 key 满足条件交换元素 19 temp a j a j a j 1 a j 1 temp flag 1 if flag 0 break printf 冒泡排序完成 n 快速排序 int hoare struct element a int l int h 分区处理函数 int i j struct element x i l j h x a i do while i x key 从后向前搜索第一个小于 x 的元素 j if i j a i a j i while i j if i j i j 则将 a i 复制给 a j j 向前移动一个位置 a j a i j while i j a i x return i 非递归的快速排序 void quick sort 1 struct element a int n 非递归的快速排序 int i l h tag top int s 20 2 l 0 h n 1 tag 1 top 0 do while l h i hoare a l h 分区处理 top s top 0 i 1 20 s top 1 h h h 1 if top 0 tag 0 处理完标志 else l s top 0 h s top 1 top while tag 1 printf 非递归快排完成 n 递归的快速排序 void quick sort 2 struct element a int l int h 递归的快速排序 int i if l h i hoare a l h 划为两个区 quick sort 2 a l i 1 对左分区快速排序 quick sort 2 a i 1 h 对右分区快速排序 简单排序函数 void jiandan sort struct element a int n int i j 循环控制变量 struct element temp 临时变量 for i 0 i n i for j i 1 j a j key 满足条件 交换元素 temp a i a i a j a j temp printf 简单排序完成 n 堆排序函数 调整堆的函数 void heap struct element a int i int m i 是根结点编号 m 是以 i 为根的子树的最后一个结点编号 struct element x int j x a i 保存记录内容 21 j 2 i j 为左孩子编号 while j m if ja j 1 key 当结点 i 有左 右两个孩子时 j 取关键较小的孩子编号 j if a j keym 以便结束循环 a i x 堆排序的主体函数 void heapsort struct element a int n int i v 循环控制变量 struct element x 临时变量 for i n i 0 i 元素后移一位 a i a i 1 for i n 2 i 1 i heap a i n 堆调整 for v n v 2 v x a 1 堆顶堆尾元素交换 a 1 a v a v x heap a 1 v 1 这次比上次少处理一个记录 for i 0 i n i 元素前移一位 a i a i 1 for i 0 i n 2 i 交换元素 x a i a i a n i 1 a n i 1 x printf 堆排序完成 n 欢迎界面函数 void startface system color 0A 设置屏幕显示的前景色 背景色 system cls 清屏 printf n n n n n printf 22 n printf n printf 欢迎使用综合排序系统 n printf n printf n printf n n n n n n n n n n system pause 暂停 菜单函数 void menu system cls 清屏 printf n t t 主菜单 n printf t t n printf t t 1 生成随机排序元素 n printf t t 2 直接插入排序 n printf t t 3 希尔排序 n printf t t 4 冒泡排序 n printf t t 5 非递归的快速排序 n printf t t 6 递归的快速排序 n printf t t 7 简单排序 n printf t t 8 堆排序 n printf t t 0 退出 n printf t t n printf n void main int num c num 记录个数 c 操作选项 int flag 0 标志 clock t start end 计时变量 文件名数组 char file1 30 直接插入排序 txt char file2 30 希尔排序 txt char file3 30 冒泡排序 txt char file4 30 非递归的快速排序 txt char file5 30 递归的快速排序 txt char file6 30 简单排序 txt char file7 30 堆排序 txt startface menu 23 while 1 printf 请输入操作项 scanf d if c 1 else switch c case 1 num creat print list num printf n flag 1 break case 2 start clock insert sort list num end clock printf 直接插入排序后的结果 n print list num save list num file1 printf The time d ms n end start printf n break case 3 start clock shell sort list num end clock printf 希尔排序后的结果 n print list num save list num file2 printf The time d ms n end start printf n break case 4 start clock bubble sort list num end clock printf 冒泡排序后的结果 n print list num save list num file3 printf The time d ms n end start printf n break case 5 start clock quick sort 1 list num end clock printf 非递归快排后的结果 n print list num 24 save list num file4 printf The time d ms n end start printf n break case 6 start clock quick sort 2 list 0 num 1 end clock printf 递归快排完成 n printf 递归快排后的结果 n print list num save list num file5 printf The time d ms n end start printf n break case 7 start clock jiandan sort list num end clock printf 简单排序后的结果 n print list num save list num file6 printf The time d ms n end start printf n break case 8 start clock heapsort list num end clock printf 堆排序后的结果 n print list num save list num file7 printf The time d ms n end start printf n break case 0 exit 1 default printf 输入错误 请重新输入 n 09 20 11 46 102 机体齿飞面孔双卧多轴组合机床及 CAD 设计 09 08 20 02 3kN 微型装载机设计 09 20 15 09 45T 旋挖钻机变幅机构液压缸设计 08 30 15 32 5 吨卷扬机设计 10 30 17 12 C620 轴拨杆的工艺规程及钻 2 16 孔的钻床夹具设计 09 21 13 39 CA6140 车床拨叉零件的机械加工工艺规程及夹具设计 831003 25 08 30 15 37 CPU 风扇后盖的注塑模具设计 09 20 16 19 GDC956160 工业对辊成型机设计 08 30 15 45 LS 型螺旋输送机的设计 10 07 23 43 LS 型螺旋输送机设计 09 20 16 23 P 90B 型耙斗式装载机设计 09 08 20 17 PE10 自行车无级变速器设计 10 07 09 23 话机机座下壳模具的设计与制造 09 08 20 20 T108 吨自卸车拐轴的断裂原因分析及优化设计 09 21 13 39 X Y 型数控铣床工作台的设计 09 08 20 25 YD5141SYZ 后压缩式垃圾车的上装箱体设计 10 07 09 20 ZH1115W 柴油机气缸体三面粗镗组合机床总体及左主轴箱设计 09 21 15 34 ZXT 06 型多臂机凸轮轴加工工艺及工装设计 10 30 16 04 三孔连杆零件的工艺规程及钻 35H6 孔的夹具设计 08 30 17 57 三层货运电梯曳引机及传动系统设计 10 29 14 08 上盖的工工艺规程及钻 6 4 5 孔的夹具设计 10 04 13 45 五吨单头液压放料机的设计 10 04 13 44 五吨单头液压放料机设计 09 09 23 40 仪表外壳塑料模设计 09 08 20 57 传动盖冲压工艺制定及冲孔模具设计 09 08 21 00 传动系统测绘与分析设计 10 07 23 46 保护罩模具结构设计 09 20 15 30 保鲜膜机设计 10 04 14 35 减速箱体数控加工工艺设计 10 04 13 20 凿岩钎具钎尾的热处理工艺探索设计 09 08 21 33 分离爪工艺规程和工艺装备设计 10 30 15 26 制定左摆动杠杆的工工艺规程及钻 12 孔的夹具设计 10 29 14 03 前盖板零件的工艺规程及钻 8 M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论