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语言代码+时间复杂度)

排序算法之冒泡和快排

排序算法的简单实现(冒泡和快排)

python实现快排算法(quicksort)