写一个Python快速排序的代码
时间: 2023-09-12 14:05:24 浏览: 89
### 回答1:
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
### 回答2:
下面是一个用Python实现的快速排序的代码:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
less, equal, greater = [], [], []
for num in arr:
if num < pivot:
less.append(num)
elif num == pivot:
equal.append(num)
else:
greater.append(num)
return quick_sort(less) + equal + quick_sort(greater)
# 测试
arr = [9, 5, 7, 2, 6, 1, 8, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
这段代码实现了快速排序算法。首先选择一个枢纽元素(本例中选择列表中间的元素作为枢纽),然后将列表分为小于、等于和大于枢纽的三部分。接着对小于和大于的部分分别进行递归调用快速排序,并将结果与等于枢纽的部分合并,最终得到排序后的列表。
以上代码中通过递归调用函数`quick_sort`来进行快速排序。如果列表长度小于等于1,则直接返回列表。否则,选择枢纽元素,并创建三个空列表`less`、`equal`和`greater`来存放小于、等于和大于枢纽的元素。接着遍历列表,将小于、等于和大于枢纽的元素分别放入对应的列表中。最后,通过递归调用`quick_sort`对小于和大于的部分进行排序,并将结果与等于枢纽的部分进行合并,最终返回排序后的列表。
以上给出的测试示例中,原始列表为`[9, 5, 7, 2, 6, 1, 8, 3]`,排序后的结果为`[1, 2, 3, 5, 6, 7, 8, 9]`。
### 回答3:
快速排序是一种常用的排序算法,它通过分治的思想将一个数组分成两个子数组的排序问题,然后递归地对子数组进行排序,最后再将两个有序的子数组合并成一个有序的数组。
以下是使用Python实现的快速排序代码:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0] # 选择数组的第一个元素作为基准值
less = [x for x in arr[1:] if x <= pivot] # 小于等于基准值的元素
greater = [x for x in arr[1:] if x > pivot] # 大于基准值的元素
return quick_sort(less) + [pivot] + quick_sort(greater)
# 测试代码
arr = [6, 8, 3, 9, 5, 2]
print(quick_sort(arr))
```
在上面的代码中,首先判断数组的长度是否小于等于1,如果是,则直接返回数组;否则,选择数组的第一个元素作为基准值。然后,遍历数组的剩余部分,将小于等于基准值的元素放入`less`列表中,将大于基准值的元素放入`greater`列表中。最后,将经过快速排序的`less`、基准值`pivot`和`greater`拼接起来返回。
在测试代码中,我们使用一个无序的数组`[6, 8, 3, 9, 5, 2]`进行测试。运行代码后,输出的结果为`[2, 3, 5, 6, 8, 9]`,即数组经过快速排序后的有序结果。
快速排序的时间复杂度为O(nlogn),其中n为待排序数组的长度。
阅读全文