def bubble_sort(nums):
n = len(nums)
# 遍历每个位置i
for i in range(n):
# 对于每个位置i,将这个位置之后(含i本身)的最小值冒到最前面,
# 使得这个位置是全局第i个最小值
for j in range(n-2, i-1, -1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
def bubble_sort_improved(nums):
n = len(nums)
# 遍历每个位置i
for i in range(n):
flag = False
# 对于每个位置i,将这个位置之后(含i本身)的最小值冒到最前面,
# 使得这个位置是全局第i个最小值
for j in range(n-2, i-1, -1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
flag = True
# 如果i及i以后的位置一次交换都没发生,说明全部是有序的,
# 就不用再遍历i以后的位置了
if not flag:
break
# 冒泡排序复杂度1+2+3+..... = n(n-1)/2 = O(n2)
a = [1, 3, 3, 1, 1, 5, 2]
bubble_sort_improved(a)
print(a)
排序-冒泡排序
最新推荐文章于 2024-07-08 13:32:49 发布