数据结构之冒泡排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构排序算法之

冒泡排序

●算法介绍

冒泡排序也叫起泡排序,它是通过一系列的”交换”动作完成的。首先第一个记录和第二个记录比较,如果第一个比较大,则二者进行交换,否则不交换;然后第二个和第三个进行比较,如果第二个比较大,则二者交换,否则不交换···一直按照这种方式排序下去,最终最大的那个数据将被排到最后的位置。

●算法流程

原始序列:23 12 8 34 21

1).下面开始进行第1趟排序:23 和12 比较,交换

结果:12 23 8 34 21

2).23 和8 比较,交换

结果:12 8 23 34 21

3).23 和34 比较,不交换

结果:12 8 23 34 21

4).34 和21 比较,交换

结果:12 8 23 21 34

第一趟冒泡结束后,最大的数据34被交换到了最后,接下来开始剩下的12 8 23 21 进行冒泡排序,按照同样的方法进行第二趟排序。

要注意的是,冒泡排序算法结束的条件是一趟排序过程中没有发生元素交换。

●代码示例

●性能分析

1.时间复杂度分析

1)最坏情况下,待排序是逆序,此时可对于外层循环的每次执行,内层循环条件a[j]>a[j+1]始终成立。及基本操作执行的次数为n-i。i的取值为0~n-1.因此基本操作的执行次数为:(n-1+1)(n-1)/2 = n(n-1)/2,时间复杂度为n的平方

2)最好的情况是本身就是有序的,时间复杂度为n

2.空间复杂度分析

由代码可以看出,额外的辅助空间只有一个tmp,空间复杂度始终为O(1).

●更多内存请关注

/p/helpylee

相关文档
最新文档