Python实现快速排序:分治算法高效排序数组,时间复杂度O(nlog(n))
快速排序是一种分治的排序算法,通过选择一个基准元素将数组分成两个子数组,使得左边的元素都小于等于基准元素,右边的元素都大于等于基准元素,然后递归地对两个子数组进行排序。 以下是一个使用Python实现的快速排序的代码: ```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) ``` 使用示例: ```python arr = [9, 10, 5, 3, 2, 8, 7, 1, 6, 4] sorted_arr = quick_sort(arr) print(sorted_arr) ``` 输出结果: ``` [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ``` 快速排序算法的时间复杂度为O(nlog(n)),其中n为数组的长度。 ######[AI写代码神器 | 533点数解答 | 2024-11-20 14:02:28]
相关提问
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)498
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)182
- 解决窗体界面设计中Invoke/BeginInvoke调用错误:完整方案及注意要点(DeepSeek | 562点数解答 | 2025-07-09 16:57:56)220
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)75
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)42
- Python 代码求解:小明当选 Y 国总统至少需多少选民支持?(字节豆包 | 207点数解答 | 2026-02-01 12:51:14)50
- 拍卖干草:如何定价才能收益最大化?(DeepSeek | 1171点数解答 | 2026-02-23 21:10:09)43
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)451
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)443
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)33
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)261