本文实例讲述了Python实现的快速排序算法。分享给大家供大家参考,具体如下:
快速排序基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
如序列[6,8,1,4,3,9],选择6作为基准数。从右向左扫描,寻找比基准数小的数字为3,交换6和3的位置,[3,8,1,4,6,9],接着从左向右扫描,寻找比基准数大的数字为8,交换6和8的位置,[3,6,1,4,8,9]。重复上述过程,直到基准数左边的数字都比其小,右边的数字都比其大。然后分别对基准数左边和右边的序列递归进行上述方法。
实现代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def parttion(v, left, right):
key = v[left]
low = left
high = right
while low < high:
while (low < high) and (v[high] > = key):
high - = 1
v[low] = v[high]
while (low < high) and (v[low] < = key):
low + = 1
v[high] = v[low]
v[low] = key
return low
def quicksort(v, left, right):
if left < right:
p = parttion(v, left, right)
quicksort(v, left, p - 1 )
quicksort(v, p + 1 , right)
return v
s = [ 6 , 8 , 1 , 4 , 3 , 9 , 5 , 4 , 11 , 2 , 2 , 15 , 6 ]
print ( "before sort:" ,s)
s1 = quicksort(s, left = 0 , right = len (s) - 1 )
print ( "after sort:" ,s1)
|
运行结果:
1
2
|
before sort: [ 6 , 8 , 1 , 4 , 3 , 9 , 5 , 4 , 11 , 2 , 2 , 15 , 6 ]
after sort: [ 1 , 2 , 2 , 3 , 4 , 4 , 5 , 6 , 6 , 8 , 9 , 11 , 15 ]
|
希望本文所述对大家Python程序设计有所帮助。