基本思想
依次比较两个相邻元素nums[i]和nums[i-1],将较大/小的元素交换到前面去,就像泡泡上浮的过程一样;比较完后进行下一轮比较。
具体实现
from typing import Listdef bubble_sort(nums: List):length = len(nums)for i in range(length):for j in range(1, length-i):if nums[j] < nums[j-1]:nums[j], nums[j-1] = nums[j-1], nums[j]
性能分析
平均时间复杂度:
- 求数组长度
length: - 两个循环:
- 总和:
空间复杂度:
优化
设置一个符号位flag,表明是否发生交换,若未发生交换说明数组已经有序。
def bubble_sort(nums: List):flag = 0length = len(nums)for i in range(length):for j in range(1, length-i):if nums[j] < nums[j-1]:nums[j], nums[j-1] = nums[j-1], nums[j]flag = 1if flag == 0:break
