冒泡排序
针对连续的两个元素进行两两比较,如果前者大于后者就交换
(1)第一轮比较:从第一个元素开始,按顺序对列表中所有N个元素中连续的两个元素进行两两比较,如果两者不满足升序关系则交换。第一轮比较过后,最大数将下沉到列表最后
(2)第二轮比较:从第一个元素开始,对列表中前N-1个元素进行两两比较,使次大数下沉到最后
(3)以此类推,N-1轮后,排序完毕
代码实现
a = [77, 42, 35, 12, 101, 5]
# # 首轮要比较N-1次
# for i in range(len(a) - 1):
# flag = True
# for j in range(len(a) - 1 - i):
# if a[j] > a[j + 1]:
# a[j], a[j + 1] = a[j + 1], a[j]
# flag = False
# if flag == True:
# break
# print(a)
def bubble_sort(arr):
for i in range(len(arr) - 1):
for j in range(len(arr) - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
b = bubble_sort(a)
print(b)
冒泡排序的时间复杂度为O(n2),最坏情况为O(n2),最好情况为O(n)