冒泡排序.选择排序,插入排序

lst = [1,8,2,9,4]

#冒泡排序

#关键点:有序区越来越大,所以外层循环是递减的,因为无序区的所以一直是从0开始且越来越小,所以内层循环是range(i)

def bubble_sort(lst):
n = len(lst)
for i in range(n-1,0,-1):
#flag = 0设置flag作用是内存循环如果没进过if就可以代表当前列表已经后续的外层循环就可以终止了
flag = 0
for j in range(i):
if lst[j] <lst[j+1]:
lst[j],lst[j+1]=lst[j+1],lst[j]
flag = 1
if flag == 0:
return





# 选择排序 这个与数据移动有关,只是比较当前有序区的最后一个和当前内存循环的值的大小,如果比有序区的小,那么记录下索引位置,直到内存循环
# 结束,那么代表当前无序区的位置应该安排在有序区的位置

def select_sort(lst):
n = len(lst)
for i in range(n-1):
min_index = i
for j in range(i+1,n-1):
if lst[j]< lst[min_index]:
min_index = j
if min_index!=i:
print(1)
lst[min_index],lst[i] = lst[i],lst[min_index]

select_sort(lst)
print(lst)



#插入排序 和有序区的比较,有序区一直在表大,无序区一直在缩小,插入的是有序区
def insert_sort(lst):
n = len(lst)
for i in range(1,n):
for j in range(i,0,-1):
if lst[j] < lst[j-1]:
print(111)
lst[j],lst[j-1] = lst[j-1],lst[j]

insert_sort(lst)
print(lst)



好的博客:
https://www.cnblogs.com/fwl8888/p/9315730.html
原文地址:https://www.cnblogs.com/duoduoyichen/p/11134269.html