算法思路
for i = 1, 2, ..., n-1, do
for j = 1, 2, ..., n-i do
if a[j] > a[j+1] then
swap(a[j], a[j+1])
end if
end for
end for
复制代码
Python实现
def bubble_sort(numbers):
n = len(numbers)
for i in range(1, n):
for j in range(n - i):
# 比较相邻元素,不断地将较大的元素,放在后面
if (numbers[j] > numbers[j+1]):
numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
return numbers
复制代码
待排序的数组
numbers = [89, 39, 43, 8, 69, 86, 59, 26, 24, 16]
复制代码
排序完成的结果
numbers = [8, 16, 24, 26, 39, 43, 59, 69, 86, 89]
复制代码
心得
- 特点是调整相邻两个对象的位置,每进行一次内循环,就将最大的值调整到最后
- 需要进行n - 1次内循环
- 时间复杂度为O(n^2)