当前位置:实例文章 » Python实例» [文章]Python快速排序算法原理及实现

Python快速排序算法原理及实现

发布人:shili8 发布时间:2024-08-03 21:54 阅读次数:0

**Python快速排序算法原理及实现**

快速排序(Quick Sort)是由Tony Hoare在1959年提出的一种高效的排序算法。它以其平均时间复杂度为O(n log n)而著名,仅次于归并排序和堆排序。快速排序是一种分治算法,它通过递归地将待排序序列分成两个较小的子序列,并分别对它们进行排序,最终合并得到有序序列。

**快速排序原理**

快速排序的基本思想是选择一个基准元素(pivot),然后将其他元素分为两组:一组元素都比基准元素小,另一组元素都比基准元素大。这样就可以分别对这两组元素进行递归地快速排序,最终得到有序序列。

**快速排序实现**

下面是Python中快速排序算法的实现:

def quick_sort(arr):
 """
 快速排序算法 :param arr: 待排序数组 :return: 排序后的数组 """
 if len(arr) <=1:
 # 如果数组长度小于或等于1,直接返回数组(因为已经有序)
 return arr else:
 #选择基准元素(pivot)
 pivot = arr[0]
 # 将其他元素分为两组:一组元素都比基准元素小,一组元素都比基准元素大 less_than_pivot = [x for x in arr[1:] if x <= pivot]
 greater_than_pivot = [x for x in arr[1:] if x > pivot]
 # 递归地对两组元素进行快速排序 return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)

# 测试用例arr = [5,2,8,3,1,6,4]
print("原始数组:", arr)
sorted_arr = quick_sort(arr)
print("排序后的数组:", sorted_arr)

**注释**

* `quick_sort`函数接受一个列表作为输入,返回一个有序的列表。
* 如果输入列表长度小于或等于1,直接返回列表(因为已经有序)。
*选择基准元素(pivot)为列表中的第一个元素。
* 将其他元素分为两组:一组元素都比基准元素小,一组元素都比基准元素大。
* 递归地对两组元素进行快速排序,最终合并得到有序的列表。

**时间复杂度**

快速排序的平均时间复杂度为O(n log n),这是因为快速排序是一种分治算法,它通过递归地将待排序序列分成两个较小的子序列,并分别对它们进行排序,最终合并得到有序序列。

**空间复杂度**

快速排序的空间复杂度为O(log n),这是因为快速排序需要额外的空间来存储递归调用的栈帧。

**总结**

快速排序是一种高效的排序算法,它以其平均时间复杂度为O(n log n)而著名。它通过递归地将待排序序列分成两个较小的子序列,并分别对它们进行排序,最终合并得到有序序列。快速排序的实现简单,易于理解和使用。

相关标签:算法python
其他信息

其他资源

Top