Python中的实现快速排序算法的函数。
发布时间:2023-07-04 00:19:47
快速排序是一种常见的排序算法,能够在平均情况下以O(n log n)的时间复杂度对一个数组进行排序。下面是一个用Python实现快速排序算法的函数。
def quick_sort(arr):
# 递归边界:若数组为空或只有一个元素,直接返回
if len(arr) < 2:
return arr
else:
# 选择一个基准元素,可以是数组中的任意一个值
pivot = arr[0]
# 将小于基准的元素放在左边,大于基准的元素放在右边
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
# 递归调用快速排序函数对左右两个子数组进行排序,并将结果拼接在一起返回
return quick_sort(less) + [pivot] + quick_sort(greater)
在这个函数中,我们首先检查数组长度。如果数组为空或者只有一个元素,那么数组是有序的,我们直接返回该数组。
否则,我们选择数组的第一个元素作为基准(pivot)。我们将所有小于等于基准的元素放在一个数组less中,将所有大于基准的元素放在一个数组greater中。
然后,我们递归地对less和greater两个子数组进行快速排序,并将排序后的结果与基准元素拼接在一起返回。
为了实现这个功能,我们使用了列表推导来快速生成less和greater两个数组。列表推导是一种Python语法,可以简洁地根据某个条件对一个列表进行筛选。
以下是一个使用示例:
arr = [9, 3, 7, 5, 2, 1, 8, 6, 4] sorted_arr = quick_sort(arr) print(sorted_arr)
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
这个示例中,我们通过调用quick_sort函数对数组arr进行排序,并将排序后的结果赋给sorted_arr。然后我们打印sorted_arr,即得到了数组的有序版本。
