📅  最后修改于: 2023-12-03 15:28:48.057000             🧑  作者: Mango
在这道题目中,你需要解决的是一道经典的算法问题:快速排序。
你需要实现一个函数 quicksort(arr: List[int]) -> List[int]
,接受一个整数数组 arr
,并返回一个新的数组,新数组中元素为原数组 arr
的排序结果。
快速排序是一种分治思想的排序算法。具体的排序流程如下:
这个算法对于长度为 $n$ 的数组,其时间复杂度为 $O(n \log n)$。
from typing import List
def quicksort(arr: List[int]) -> List[int]:
if len(arr) <= 1:
return arr
pivot = arr[0]
left = []
right = []
for i in range(1, len(arr)):
if arr[i] < pivot:
left.append(arr[i])
else:
right.append(arr[i])
return quicksort(left) + [pivot] + quicksort(right)
输入:
arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(quicksort(arr))
输出:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
快速排序是一种常见的排序算法,其时间复杂度为 $O(n \log n)$。在实际开发中,通常使用 Python 标准库中的 sorted()
函数来实现排序。