快速排序算法

1、基本思路

快速排序算法的基本思想总结如下:

(1)先从数列中取出一个数作为基准数。

(2)以这个数为基准,将比其大的数全都放到他的右边,小于或等于它的数全放到他的左边

(3)再对左右区间重复(1)(2)步的操作,直到各个区间中只有一个数。

简单形象地总结起来就是: 挖坑填数 + 分治法

 

2、简单示例

下面,我们给出快排算法的一个简单示例。数组如下:

0 1 2 3 4 5 6 7 8 9
72 6 57 88 60 42 83 73 48 85

 

 

我们取区间的第一个数作为基准数,最初设置 i = 0, j = 9; temp = a[i] = 72,相当于在a[0]位置挖了一个坑。

然后从j开始(基准数为最左边,则要从最右边开始查找)向前查找,找到一个小于等于temp的数。当j=8时,符合条件。

因此,把a[8]填入到a[0]那个坑中,然后将a[8]空出来。

0 1 2 3 4 5 6 7 8 9
48 6 57 88 60 42 83 73   85

 

 

 

之后i向前查找,找到比a[0]大的数a[3],将a[3]填入到a[8]中,又将a[3]空出来。

0 1 2 3 4 5 6 7 8 9
48 6 57   60 42 83 73 88 85

 

 

 

一直重复上述操作,直到i=j=5时,停止,并且将temp填入到a[5]中。

0 1 2 3 4 5 6 7 8 9
48 6 57 42 60 72 83 73 88 85

 

 

 

3、代码(Python)

def quick_sort(data, left, right):
    if left < right:
        i, j = left, right
        temp = data[left]
        while(i= temp):
                j--
        data[i] = data[j]
        while(i

 

你可能感兴趣的:(快速排序算法)