快速排序算法的Python实现 - 实现快速排序算法的Python函数
发布时间:2023-05-22 00:49:00
快速排序算法是一种经典的排序算法,它通过不断地对数组进行划分,使得数组中的元素不断地有序化,直到最终整个数组有序。它的时间复杂度为 $O(nlogn)$,在大部分情况下都优于其他排序算法。
下面是实现快速排序算法的Python函数:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2] # 选择一个基准点
left = [x for x in arr if x < pivot] # 将比基准点小的放到左边
middle = [x for x in arr if x == pivot] # 将等于基准点的放到中间
right = [x for x in arr if x > pivot] # 将比基准点大的放到右边
return quick_sort(left) + middle + quick_sort(right) # 分治递归,合并结果
接下来逐行解释一下这个函数的实现过程:
1. 如果数组只有一个或零个元素,说明已经有序,直接返回。
2. 从数组中选择一个基准点,这里选择的是中间元素。
3. 将数组分成小于、等于、大于基准点的三个部分。
4. 对前两部分递归执行快速排序算法,将结果和中间部分合并。
这个函数的时间复杂度为 $O(nlogn)$,但是它的空间复杂度为 $O(n)$,不如其他排序算法比较占用内存。在实际使用时,需要根据情况选择是否使用快速排序算法。
在使用时,只需要传入要排序的数组即可:
arr = [5, 3, 8, 4, 2, 7, 1, 3, 6] sorted_arr = quick_sort(arr) print(sorted_arr)
输出结果为:
[1, 2, 3, 3, 4, 5, 6, 7, 8]
可以看到,这个函数确实实现了快速排序算法,将数组按照从小到大的顺序排序了。
