帮我写一段快速排序代码
时间: 2023-08-31 19:38:34 浏览: 57
### 回答1:
def QuickSort(array):
if len(array) <= 1:
return array
else:
pivot = array[0]
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return QuickSort(less) + [pivot] + QuickSort(greater)QuickSort(array)
### 回答2:
快速排序是一种常用的排序算法,它的基本思想是选取一个基准元素,将数组划分为两个子序列,一个比基准元素小,另一个比基准元素大,然后对这两个子序列递归地进行排序。以下是一个使用递归实现的快速排序的代码示例:
```
def quick_sort(array):
if len(array) <= 1:
return array
else:
pivot = array[0] # 选择第一个元素作为基准
less = [x for x in array[1:] if x <= pivot] # 小于等于基准的子序列
greater = [x for x in array[1:] if x > pivot] # 大于基准的子序列
return quick_sort(less) + [pivot] + quick_sort(greater)
```
在这个代码中,首先判断数组的长度是否小于等于1,如果是,则直接返回该数组,因为长度小于等于1的数组已经是有序的。否则,选取数组的第一个元素作为基准,将数组划分为两个子序列:一个是小于等于基准的子序列(使用列表推导式筛选出来),另一个是大于基准的子序列。然后分别对这两个子序列递归调用快速排序函数,并将结果合并起来,形成最终的排序结果。
快速排序的时间复杂度为O(nlogn),它是一种效率较高的排序算法。
### 回答3:
快速排序是一种常用的排序算法,它通过在待排序数组中选择一个元素作为"基准",然后将数组中小于基准的元素移到基准的左边,大于基准的元素移到基准的右边,从而将数组分割成两个部分。然后,对这两个部分分别进行递归地快速排序,最终得到一个有序的数组。
下面是一个简单实现快速排序的代码:
```python
def quick_sort(arr):
if len(arr) <= 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) # 递归地快速排序左右两部分并拼接结果
# 测试
arr = [7, 2, 5, 1, 9, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
以上代码首先定义了一个`quick_sort()`函数实现快速排序的逻辑。当待排序的数组长度小于等于1时,直接返回数组本身。否则,选取第一个元素作为基准,将数组分割成左右两部分,再递归地对这两个部分进行快速排序,并将结果拼接在一起。
最后,我们对一个测试数组`[7, 2, 5, 1, 9, 3]`进行快速排序,并打印排序后的结果。输出结果为`[1, 2, 3, 5, 7, 9]`,说明快速排序算法正常工作。