快速排序QuickSort

快速排序是一种基于比较的排序算法。快速排序预先设定一个基准位,从左右两端轮次遍历,将所有小于基准位的元素都放在其左侧,将所有大于基准位的元素都放在其右侧,然后在分别对左侧区间和右侧区间进行上述操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def QuickSort(arr, left, right): 

if left > right:
return

l, r = left, right
pivot = int((l+r)/2)
pivotValue = arr[pivot]

while l < r:
# while句中不添加 l < r条件,会出现 l > r 情况,与上面的while冲突!
while arr[l] < pivotValue and l < r:
l += 1
arr[pivot] = arr[l]
pivot = l

while arr[r] > pivotValue and l < r:
r -= 1
arr[pivot] = arr[r]
pivot = r

arr[pivot] = pivotValue
# 不需要再对pivot位进行操作
QuickSort(arr, left, pivot-1)
QuickSort(arr,pivot+1, right)

if __name__ == '__main__':
arr = [3,1,4,2,5,0]
QuickSort(arr,0,len(arr)-1)
print(arr)