人之所以痛苦,那是因为你在成长。--------magic_guo
为什么称之为lowB三人组:因为时间复杂度都是O(n*2)
话不多说,直接上代码:
# 排序中的lowB三人组
# 1.冒泡排序
li = [5, 7, 3, 1, 9, 4, 6]
def bubble_sort(li):
l = len(li)
for i in range(l-1):
for j in range(l-i-1):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
return li
# 冒泡排序改进
def bubble_sort1(li):
l = len(li)
for i in range(l - 1):
exchange = False
for j in range(l - i - 1):
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
exchange = True
# 判断在这个过程中是否有交换,如果没有交换,则说明已经是有序的,则直接break
if not exchange:
break
return li
print(bubble_sort1(li))
# print(bubble_sort(li))
# 选择排序
def select_sort(li):
l = len(li)
for i in range(l-1):
min_loc = i
for j in range(i, l): #(i+1, l)
if li[min_loc] > li[j]:
min_loc = j
li[i], li[min_loc] = li[min_loc], li[i]
return li
# print(select_sort(li))
# 插入排序
def insert_sort(li):
l = len(li)
for i in range(1, l):
for j in range(i, 0, -1):
if li[j] < li[j-1]:
li[j-1], li[j] = li[j], li[j-1]
return li
# print(insert_sort(li))