冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
下面是用 Python 实现冒泡排序的代码:
defbubble_sort(arr):
# 遍历所有数组元素
for i in range(len(arr)):
# 提前退出冒泡循环的标志位
exchange = False
for j in range(len(arr) - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
exchange = True # 发生了交换,故将交换标志位置为真
if not exchange: # 没有发生交换,说明数组已经有序,因此退出循环
break
在上面的代码中,我们使用了一个 exchange 标志位来记录每一轮冒泡排序中是否发生了交换。如果在某一轮冒泡排序中没有发生交换,那么我们就可以提前退出冒泡排序,因为这个数列已经有序了。这样做可以提高冒泡排序的效率。