标签:部分 大于 元素 分而治之 turn 边界条件 数据 分组 需要
在一组数据中选择一个基准值,让后将数据分为两个部分,一部分大于基准,一部分小于基准,然后按此方法将两个部分分组,直到不能再分为止。
需要明白一个概念递归和分而治之的概念。
1 # 快速排序
2
3 import random
4
5 def quick_sort(arr):
6 # 边界条件
7 if len(arr) < 2:
8 return arr
9 key = random.choice(arr) # 选择基准
10 left = [i for i in arr if i < key]
11 pivot = [i for i in arr if i == key]
12 right = [i for i in arr if i > key]
13 # 如果想将重复元素去掉用 key 将 pivot 代替即可
14 return quick_sort(left) + pivot + quick_sort(right)
15
16 L = [1, 2, 3, -8, 2, -2, -2, 4, 9, -5, 1, 6, 5]
17 print(quick_sort(L))
标签:部分 大于 元素 分而治之 turn 边界条件 数据 分组 需要
原文地址:http://www.cnblogs.com/tingshuo123/p/6935513.html