分成两部分,每次在一部分中随机选一个数字,将小于得数排在该数前面,大于得排在后面。
def quickSort(A, begin, end):
if begin >= end:
return;
pivot = partition(A, begin, end);
quickSort(A, pivot+1, end);
quickSort(A, begin, pivot-1);
def partition(A, begin, end):
print(begin, end);
pivot = A[begin];
B = [];
C = [];
for i in range(end-begin+1):
if(A[i+begin]<pivot):
B.append(A[i+begin]);
else:
C.append(A[i+begin]);
pivotIndex = len(B)+begin;
for i in range(end-begin+1):
if i < len(B):
A[begin+i] = B[i];
else:
A[begin+i] = C[i-len(B)];
print(A[pivotIndex],pivotIndex, A[begin:end+1]);
return pivotIndex;
def swap(a, b):
return b, a;