1.快速排序
快速排序是一种交换排序。
快速排序由C. A. R. Hoare在1962年提出。
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。
然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
详细的图解往往比大堆的文字更有说明力
下面上图说明一下,不过这个动态图略显复杂,我也看得晕晕的
2.废话不多说,直接上代码
1 # 递归实现 快排
2 def quickSort(arr):
3 if len(arr) <= 1:
4 return arr
5 mid = arr[len(arr) // 2]
6 left, right = [], []
7 arr.remove(mid)
8 for item in arr:
9 if item >= mid:
10 right.append(item)
11 else:
12 left.append(item)
13 return quickSort(left) + [mid] + quickSort(right)
14
15 l2 =list(random.choices([x for x in range(100)],k=20))
16 print('l2=',l2)
17 l2=quickSort(l2)
18 print('l2=',l2)