1、QuickSort
1 def Rand_Partition(A,p,r):
2 """
3 划分数组的元素下标q
4 :param A: 数组
5 :param p: 数组左边界
6 :param r: 数组右边界
7 :return: q
8 """
9 i=random.randint(p,r)
10 A[i], A[r]=A[r],A[i]
11 x=A[r]
12 i=p-1
13 for j in range(p,r):
14 if A[j]<=x:
15 i=i+1
16 A[i], A[j]=A[j],A[i]
17 A[r], A[i+1]=A[i+1],A[r]
18 return i+1
19
20 def QuickSort(A,p,r):
21 """
22 快速排序算法
23 :param A:待排序的数组
24 :param p: 待排数组的左
25 :param r: 待排数组的右
26 :return:
27 """
28 if p<r:
29 q=Rand_Partition(A,p,r)
30 QuickSort(A,p,q-1)
31 QuickSort(A,q+1,r)