python,冒泡排序与快排
Posted 张子恒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python,冒泡排序与快排相关的知识,希望对你有一定的参考价值。
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 \'\'\'
- 注:快排代码实现(类似于二叉树 递归调用)----右手左手一个慢动作,右手左手一个慢动作重播
以上是关于python,冒泡排序与快排的主要内容,如果未能解决你的问题,请参考以下文章
算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)
七大排序算法(插排,希尔,选择排序,堆排,冒泡,快排,归并)--图文详解
8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)