请用python输出一段快速排序代码
时间: 2023-08-31 09:27:40 浏览: 82
### 回答1:
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = [x for x in arr if x < pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + [pivot] + quick_sort(right)print(quick_sort([5,1,2,7,3,4,6]))
### 回答2:
快速排序是一种常用的排序算法,其基本思想是通过选择一个基准值,将序列分成两个子序列,小于基准值的放在左边,大于基准值的放在右边,然后对两个子序列进行递归调用。下面是用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)
# 测试
arr = [5, 2, 8, 1, 9, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
这段代码中的`quick_sort`函数实现了快速排序算法。首先判断输入的数组是否为空或只有一个元素,如果是则直接返回该数组;否则选择中间的元素作为基准值(也可以选择第一个或最后一个元素)。
然后使用列表推导式将小于基准值的元素放在`left`列表中,等于基准值的元素放在`middle`列表中,大于基准值的元素放在`right`列表中。
最后,将递归调用`quick_sort`函数对`left`和`right`两个子序列进行排序,并将结果与`middle`列表连接起来,作为最终的排序结果。
对于输入的测试数组`[5, 2, 8, 1, 9, 3]`,代码输出的结果为`[1, 2, 3, 5, 8, 9]`。
### 回答3:
以下是使用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)
# 示例
arr = [5, 8, 1, 3, 9, 2]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
这段代码使用了递归的思想实现了快速排序算法。首先,在函数内部判断了列表长度是否小于等于1,如果是则直接返回列表本身。然后,选择列表中的一个元素作为基准值(pivot)。根据基准值,将列表分为比基准值小、等于基准值和大于基准值的三个子列表。再分别对三个子列表进行递归调用快速排序函数,最后将排好序的子列表拼接起来得到最终的有序列表。
在示例中的输出结果是:[1, 2, 3, 5, 8, 9],表示对列表[5, 8, 1, 3, 9, 2]进行快速排序后得到的有序列表。
阅读全文