1.挖坑版快排思路详解:
https://blog.csdn.net/MoreWindows/article/details/6684558
Python实现代码
#coding:utf-8
def AdjustArray(a, left, right):
i = left
j = right
X = a[i]
while i < j:
while i < j and a[j] >= X:
j -= 1
if i < j:
a[i] = a[j]
i += 1
while i < j and a[i] < X:
i += 1
if i < j:
a[j] = a[i]
j -= 1
a[i] = X
return i
def quickSort(a, left, right):
if left < right:
p = AdjustArray(a, left, right)
quickSort(a, left, p - 1)
quickSort(a, p + 1, right)
a = [72, 6, 57, 88, 60, 42, 83, 73, 48, 85]
length = len(a) - 1
test = quickSort(a, 0, length)
print(a)
2.双指针法
def Partition(a, low, hight):
flag = a[low]
i, j = low, hight
while i < j:
while i < j and a[j] >= flag:
j -= 1
while i < j and a[i] <= flag:
i += 1
if i != j:
a[i], a[j] = a[j], a[i]
a[low], a[i] = a[i], a[low]
return i
def quickSort(a, low, hight):
if low < hight:
p = Partition(a, low, hight)
quickSort(a, low, p - 1)
quickSort(a, p + 1, hight)
a = [5,7,1,6,4,8,3,2 ]
lenght = len(a)
quickSort(a, 0, lenght - 1)
print(a)