交换排序的基本思想是两两比较待排序的元素,反序时进行交换,直至没有反序元素为止。冒泡排序是最简单的交换排序,也是很多人接触到的第一种排序算法。

通过无序区相邻元素的比较,进行位置交换,使得最小的元素如气泡般逐渐往上“漂浮”直至“水面”,或者使得最大元素“沉到”最下面。

以c为例从小到大排序,采用最小元素漂浮。

输出结果:

算法优化:

#include

平均情况:比较复杂,但可以证明排序趟数为O(n)故时间复杂度为O(n^2^)

最坏情况:一开始元素就是有序从大到小的,每一次都需要交换,时间复杂度为 O(n^2^)

最好情况:一开始元素就是有序从小到大的,遍历一次即可,所以时间复杂度为O(n)

空间复杂度:

只使用了i,j,tmp三个辅助变量,与问题规模n无关。空间复杂度为O(1)

交换条件为R[j]<R[j-1],故相同元素的相对位置不变。这是一种稳定的排序方法。