理论教育 2019版数据结构高分笔记:起泡排序指导

2019版数据结构高分笔记:起泡排序指导

时间:2023-11-03 理论教育 版权反馈
【摘要】:接下来对序列38 49 65 76 13 27按照同样的方法进行第二趟起泡排序。经过若干趟起泡排序后,最终序列有序。要注意的是,起泡排序算法结束的条件是在一趟排序过程中没有发生关键字交换。起泡排序算法代码如下:3.性能分析时间复杂度分析由起泡排序算法代码可知,可选取最内层循环中的关键字交换操作作为基本操作。

2019版数据结构高分笔记:起泡排序指导

1.算法介绍

起泡排序又称冒泡排序。它是通过一系列的“交换”动作完成的。首先第一个关键字和第二个关键字比较,如果第一个大,则二者交换,否则不交换;然后第二个关键字和第三个关键字比较,如果第二个大,则二者交换,否则不交换……一直按这种方式进行下去,最终最大的那个关键字被交换到了最后,一趟起泡排序完成。经过多趟这样的排序,最终使整个序列有序。这个过程中,大的关键字像石头一样“沉底”,小的关键字像气泡一样逐渐向上“浮动”,起泡排序的名字由此而来。

2.算法流程

下面进行第一趟起泡排序。

1)1号和2号比较,49>38,交换。

2)2号和3号比较,49<65,不交换。

3)3号和4号比较,65<97,不交换。

4)4号和5号比较,97>76,交换。

5)5号和6号比较,97>13,交换。

6)6号和7号比较,97>27,交换。

7)7号和8号比较,978-7-111-58746-0-Chapter08-32.jpg,交换。(www.daowen.com)

至此一趟起泡排序结束,最大的97被交换到了最后,97到达了它最后的位置。接下来对序列38 49 65 76 13 27978-7-111-58746-0-Chapter08-34.jpg按照同样的方法进行第二趟起泡排序。经过若干趟起泡排序后,最终序列有序。要注意的是,起泡排序算法结束的条件是在一趟排序过程中没有发生关键字交换。

起泡排序算法代码如下:

3.性能分析

(1)时间复杂度分析

由起泡排序算法代码可知,可选取最内层循环中的关键字交换操作作为基本操作。

1)最坏情况,待排序列逆序,此时对于外层循环的每次执行,内层循环中if语句的条件R[j]<R[j-1]始终成立,即基本操作执行的次数为n-i。i的取值为1~n-1。因此,基本操作总的执行次数为(n-1+1)(n-1)/2=n(n-1)/2,由此可知时间复杂度为O(n2)。

2)最好情况,待排序列有序,此时内层循环中if语句的条件始终不成立,交换不发生,且内层循环执行n-1次后整个算法结束,可见时间复杂度为O(n)。

综合以上两种情况,平均情况下的时间复杂度为O(n2)。

(2)空间复杂度分析

由算法代码可以看出,额外辅助空间只有一个temp,因此空间复杂度为O(1)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈