📅  最后修改于: 2023-12-03 14:55:09.794000             🧑  作者: Mango
冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思路是从头到尾依次比较相邻的两个元素,如果它们的顺序错误就交换它们,这样一趟比较下来,最大的元素就被交换到了最后面,然后再从头开始比较,直到所有的元素都按照从小到大(或从大到小)的顺序排列好为止。
冒泡排序的时间复杂度为 $O(n^2)$。整个算法需要进行 $n(n-1)/2$ 次比较和交换操作,因此时间复杂度上界为 $O(n^2)$。
在排序过程中,最好的情况下,只需要进行 $n$ 次比较和 $0$ 次交换,此时时间复杂度为 $O(n)$,但是最坏的情况下,需要进行 $n(n-1)/2$ 次比较和交换,此时时间复杂度为 $O(n^2)$。
可以使用一些优化技巧来提高冒泡排序的效率,如设置一个布尔变量记录是否有交换发生,若某一趟比较中没有发生交换,则说明已经排好序了,此时可以直接退出循环,从而避免不必要的比较。
以下为冒泡排序的 Python 代码实现:
def bubble_sort(array):
n = len(array)
for i in range(n):
# 设置一个布尔变量记录是否有交换发生
flag = False
for j in range(n-i-1):
if array[j] > array[j+1]:
# 交换相邻两个元素的值
array[j], array[j+1] = array[j+1], array[j]
flag = True
# 若某一趟比较中没有发生交换,则说明已经排好序了
if not flag:
break
return array
其中,array
为待排序的数组,n
表示数组的长度。第一层循环遍历整个数组,第二层循环比较相邻两个元素的大小,并根据需要交换它们的顺序。最后,若某一趟比较中没有发生交换,则说明已经排好序了,这时可以直接退出循环,从而避免不必要的比较。