[算法笔记]: Python 实现的冒泡排序

150 阅读1分钟

算法思路

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)