分而治之的思想体现_快速排序
Posted wawees
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分而治之的思想体现_快速排序相关的知识,希望对你有一定的参考价值。
快速排序
1#快速查询
2
3def quicksort(array):
4 if len(array) < 2: #如果输入数组为空或者只有一个元素,则直接返回该数组
5 return array
6 else:
7 pivot = array[0]
8 print("array:",array)
9 print("pivot=",pivot)
10 less = [i for i in array[1:] if i <= pivot]
11 print("less:",less)
12 greater = [i for i in array[1:] if i > pivot]
13 print("graeter:",greater,"\n")
14 return quicksort(less) + [pivot] + quicksort(greater)
15
16print(quicksort([3,1,7,4,0,6,9]))
直接结果:
1array: [3, 1, 7, 4, 0, 6, 9]
2pivot= 3
3less: [1, 0]
4graeter: [7, 4, 6, 9]
5
6array: [1, 0]
7pivot= 1
8less: [0]
9graeter: []
10
11array: [7, 4, 6, 9]
12pivot= 7
13less: [4, 6]
14graeter: [9]
15
16array: [4, 6]
17pivot= 4
18less: []
19graeter: [6]
20
21[0, 1, 3, 4, 6, 7, 9]
执行流程
1、优先从layer1开始进行分裂,以3为初始条件进行大小比较,分为less和greater。然后再针对分裂后的每一个数组进行下一次分裂,按照第一次方法。整个数组已树形结构展开后,直到每个分支只有一个元素或者无元素作为递归的终点。
2、将分裂的结果重新组合,从layer1的结果作为处理分支,优先处理less部分,从最底层往上进行汇总按照less+pivot+greater的方式组合;再加上layer1指定的pivot;最后处理greater部分,从最底层往上进行汇总 less + pivot +greater。
以上是关于分而治之的思想体现_快速排序的主要内容,如果未能解决你的问题,请参考以下文章