分而治之的思想体现_快速排序

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: [3174069]
2pivot= 3
3less: [10]
4graeter: [7469
5
6array: [10]
7pivot= 1
8less: [0]
9graeter: [] 
10
11array: [7469]
12pivot= 7
13less: [46]
14graeter: [9
15
16array: [46]
17pivot= 4
18less: []
19graeter: [6
20
21[0134679]

执行流程

1、优先从layer1开始进行分裂,以3为初始条件进行大小比较,分为less和greater。然后再针对分裂后的每一个数组进行下一次分裂,按照第一次方法。整个数组已树形结构展开后,直到每个分支只有一个元素或者无元素作为递归的终点。


2、将分裂的结果重新组合,从layer1的结果作为处理分支,优先处理less部分,从最底层往上进行汇总按照less+pivot+greater的方式组合;再加上layer1指定的pivot;最后处理greater部分,从最底层往上进行汇总 less + pivot +greater。


以上是关于分而治之的思想体现_快速排序的主要内容,如果未能解决你的问题,请参考以下文章

快速排序基本思想,递归写法,python和java编写快速排序

JavaScript快速排序

归并排序和快速排序

快速排序算法

归并和快速排序思想的延伸

分治思想--快速排序解决TopK问题