lowB 三人组
1.冒泡排序
2.选择排序
3.插入排序
1.冒泡排序
#冒泡排序法:竖看,一一比较,把大的放在最顶。 每两个相邻的数,如果前边的比后边大就交换这两个数。 ''' 分析: 1.本来为无序区,没进行一趟冒泡,就有一位进入有序区,无序区就-1 2.正常来说:一个列表需要走N趟冒泡,但是,最后一位数其实是不需要走了,就是 N-1 趟 3.i 表示趟数,j 表示 箭头 2.时间复杂度:O(N2) ''' import random def bubble_sort(x): for i in range(len(x)-1): change = False for j in range(len(x)-i-1):
if x[j] > x[j+1]: x[j],x[j+1] = x[j+1],x[j] change =True if not change: break li = list(range(10)) random.shuffle(li) print(li) bubble_sort(li) print(li)
结果:
2.选择排序
# 选择排序法: 横看,把最小的放在最左边 ''' 关键点: 无序区 最小数额位置 ''' import random def select_sort(x): for i in range(len(x)-1): min_loc = i for j in range(i+1,len(x)): if x[j] < x[min_loc]: min_loc = j if min_loc !=i: x[i],x[min_loc] = x[min_loc],x[i] li = list(range(10)) random.shuffle(li) print(li) select_sort(li) print(li)
结果:
3.插入排序
# 插入排序法: 先一个有序区数字,把无序区的数依次插入到有序区,直到无序区没有为止 ''' 关键点: 摸到的牌 手里的牌 ''' import random def insert_sort(x): for i in range(1,len(x)): tmp = x[i] j = i-1 while j >=0 and tmp < x[j]: x[j+1] = x[j] j = j-1 x[j+1] = tmp li = list(range(10)) random.shuffle(li) print(li) insert_sort(li) print(li)
结果: