使用Python写一份快速排序法
时间: 2024-03-06 17:25:26 浏览: 70
Python写的快速排序
以下是Python中的快速排序算法实现:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
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)
arr = [3, 7, 1, 2, 9, 4, 8, 6, 5]
print(quick_sort(arr))
```
输出:
```
[1, 2, 3, 4, 5, 6, 7, 8, 9]
```
快速排序的基本思路是选择一个枢轴(pivot)元素,将原数组分成两部分,一部分是小于等于pivot的元素,一部分是大于pivot的元素,然后分别对这两部分递归地进行快速排序,最后将两部分合并即可。
在上述代码中,我们选择第一个元素作为pivot,然后使用列表推导式分别构建了left和right两个列表,分别存储小于等于pivot和大于pivot的元素。最后,我们对left和right分别进行递归排序,并将结果和pivot合并成一个列表返回。
需要注意的是,在递归过程中,如果原数组的长度小于等于1,就直接返回,避免出现死循环。另外,我们没有使用原地排序,而是采用了分治的思想,因此空间复杂度较高,为O(nlogn)。
阅读全文