1、课程设计报告 作作 者者: 学学 号:号: 教 学 点教 学 点: 专专 业业: 机电一体化工程 题题 目目: 冒泡排序 指导者:指导者: 评阅者:评阅者:
2、 2013 年 4 月 课课 程程 设设 计计 报报 告告 摘摘 要要 摘要:冒泡排序,是指计算机的一种排序方法。冒泡排序的基本概念是:依 次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较 第 1 个和第 2 个数,将小数放前,大数放后。然后比较第 2 个数和第 3 个数,将 小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因 为可能由于第 2 个数和第 3 个数的交换,使得第 1 个数不再小于第 2 个数) ,将
3、小 数放前, 大数放后, 一直比较到倒数第二个数 (倒数第一的位置上已经是最大的) , 第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第 二大的数) 。如此下去,重复以上过程,直至最终完成排序。本程序采用 Microsoft Visual C+ 6.0 调试。 该排序方法也有一些不足的地方。 关键词: 冒泡排序 比较 调试 排序 目 次 1 引言 1 2 冒泡排序的实现 1 2.1 冒泡排序的基本概念 1 2.2 冒泡排序引例 1 2.3 冒泡排序的流程图及程序代码 2 3 冒泡排序的调试 4 3.1 冒泡排序的调试方法 4 3.2 程序调试 5
4、4 冒泡排序的性能分析 6 4.1 时间复杂度 6 4.2 空间复杂度 7 4.3 稳定性 7 5 冒泡排序的不足 7 结论 9 致谢 10 参考文献11 附录 A 13 第 1 页 共 13 页 1 1 引言引言 在许多程序设计中,我们需要将一个数列进行排序,以方便统计,而冒泡排序 一直由于其简洁的思想方法而倍受青睐 冒泡排序,是指计算机的一种排序方法,它的时间复杂度为 O(n2) ,虽然不 及堆排序、快速排序,但是有两个优点:1.“编程复杂度”很低,很容易写出代码; 2.具有稳定性, 这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的 序列,而堆排序、快速排序均不具
5、有稳定性。不过,一路、二路归并排序、不平衡二 叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒 泡排序是经过 n-1 趟子排序完成的,第 i 趟子排序从第 1 个数至第 n-i 个数,若第 i 个数比后一个数大(则升序,小则降序)则交换两数。 因为冒泡排序方法简单,所以得到广泛应用。 2 2 冒泡排序的实现冒泡排序的实现 2 21 1 冒泡排序的基本概念冒泡排序的基本概念 冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在 后面。即在第一趟:首先比较第 1 个和第 2 个数,将小数放前,大数放后。然后比较 第 2 个数和第 3 个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将 小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第 一对数开始比较(因为可能由于第 2 个数和第 3 个数的交换,使得第 1 个数不再小于 第 2 个数) ,将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上 已经是最大的) ,第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整 个数列中是第二大的数) 。如此下去,重复以上过程,直至最终完成排序。 用二重循环实现,外循环变量设为 i,内循环变量