快速排序数组数据的函数实现
发布时间:2023-06-26 14:44:58
快速排序(Quick Sort)是一种基于分治思想的高效排序算法,由C.A.R. Hoare在1960年提出,是非常常用和广泛的排序算法之一。
快速排序的基本思想是:选择一个元素作为基准值(Pivot),将序列分为两部分,使左边部分的所有元素都小于等于基准值,右边部分的所有元素都大于等于基准值,然后对左右两部分分别递归进行排序,直到整个序列都有序。
下面是快速排序数组数据的函数实现:
def quick_sort(arr):
if len(arr) <= 1: # 如果序列元素个数小于等于1,则直接返回
return arr
pivot = arr[0] # 将 个元素作为基准值
left = [x for x in arr[1:] if x <= pivot] # 从左边部分找出小于等于基准值的元素
right = [x for x in arr[1:] if x > pivot] # 从右边部分找出大于基准值的元素
return quick_sort(left) + [pivot] + quick_sort(right) # 进行递归排序
在这个实现中,首先检查序列的长度是否小于等于1,如果是,则直接返回。然后选择 个元素作为基准值。
接着,使用 Python 的列表推导式分别找出左边部分和右边部分的元素。其中,左边部分的元素必须小于等于基准值,右边部分的元素必须大于基准值。
最后,递归调用 quick_sort 函数对左右部分进行排序,然后将左、中、右三个部分的元素拼接在一起,返回排序后的结果。
快速排序的时间复杂度为 O(nlogn),其中n为序列的长度,因为每次对序列进行划分都需要O(n)的时间,而序列被划分的次数为 O(logn)。由于快速排序包括递归调用,所以也需要考虑栈操作的开销。空间复杂度最坏情况下为O(n), 情况下为O(logn)。
