1.冒泡排序
- 原理:拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结束后最上面那个一定是最大的数
1 def bubble_sort(li): 2 for i in range(len(li)-1): 3 for j in range(len(li)-i-1): 4 if li[j] > li[j+1]: 5 li[j],li[j+1]=li[j+1],li[j] 6 7 li = [1,5,2,6,3,7,4,8,9,0] 8 bubble_sort(li) 9 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2.快排
1 def quick(list): 2 if len(list) < 2: 3 return list 4 5 tmp = list[0] # 临时变量 可以取随机值 6 left = [x for x in list[1:] if x <= tmp] # 左列表 7 right = [x for x in list[1:] if x > tmp] # 右列表 8 return quick(left) + [tmp] + quick(right) 9 10 li = [4,3,7,5,8,2] 11 print quick(li) # [2, 3, 4, 5, 7, 8] 12 13 #### 对[4,3,7,5,8,2]排序 14 ‘‘‘ 15 [3, 2] + [4] + [7, 5, 8] # tmp = [4] 16 [2] + [3] + [4] + [7, 5, 8] # tmp = [3] 此时对[3, 2]这个列表进行排序 17 [2] + [3] + [4] + [5] + [7] + [8] # tmp = [7] 此时对[7, 5, 8]这个列表进行排序 18 ‘‘‘
- 注:快排代码实现(类似于二叉树 递归调用)----右手左手一个慢动作,右手左手一个慢动作重播
原文:https://www.cnblogs.com/ziheng8/p/14843708.html