# 冒泡排序
# 平均时间复杂度 O(n^2)
# 最好情况 O(n)
# 最坏情况 O(n^2)
# 空间复杂度 O(1)
# 算法描述:
# 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
# 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
# 针对所有的元素重复以上的步骤,除了最后一个。
# 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
# 例子:[9, 1, 10, 4, 3, 11, 8]
# [1, 9, 4, 3, 10, 8, 11]
# [1, 4, 3, 9, 8, 10, 11]
# [1, 3, 4, 8, 9, 10, 11]
# [1, 3, 4, 8, 9, 10, 11]
# [1, 3, 4, 8, 9, 10, 11]
# [1, 3, 4, 8, 9, 10, 11]
# #python实现
def bubble_sort(lists):
# 获取lists的总长度
count = len(lists)
# 总共进行(count-1)轮比较
for i in range(0, count - 1):
# #每一轮的比较,注意range的变化,这里需要进行length-1-i长的比较,
# 注意-i的意义(可以减少比较已经排好序的元素)
for j in range(0, count - 1 - i):
# 交换
if lists[j] > lists[j + 1]:
lists[j], lists[j + 1] = lists[j + 1], lists[j]
# 打印每一轮交换后的列表
print(lists)
return lists
if __name__ == "__main__":
lists = [9, 1, 10, 4, 3, 11, 8]
print("冒泡排序:")
print("排序前:", lists)
print(bubble_sort(lists))
冒泡排序
最新推荐文章于 2024-05-06 00:08:33 发布