Python在快速排序法中,使用递归函数实现快速排序时,选择基准数为列表中间的元素,按照快速排序法的原理,编写函数实现这种形式的快速排序
时间: 2024-12-22 07:32:10 浏览: 15
Python中使用递归实现快速排序,选取基准数通常有两种常见策略:一种是取第一个元素、最后一个元素或中间元素。这里我们选择中间元素作为基准。快速排序的基本步骤如下:
```python
def quicksort(arr):
if len(arr) <= 1: # 如果数组长度小于等于1,直接返回,因为单个元素或空数组已经是有序的
return arr
def partition(arr, low, high): # 分区函数,找到基准值并把小于它的放在左边,大于或等于它的放在右边
pivot = arr[(low + high) // 2] # 取中间元素作为基准
i = low - 1 # 指针i指向左侧
for j in range(low, high):
if arr[j] < pivot:
i += 1 # 将小于基准的元素交换到指针右侧
arr[i], arr[j] = arr[j], arr[i]
arr[i+1], arr[high] = arr[high], arr[i+1] # 将基准放到正确的位置
return i + 1 # 返回基准的新位置
pivot_index = partition(arr, 0, len(arr) - 1)
left = quicksort(arr[:pivot_index]) # 对基准左侧元素进行排序
right = quicksort(arr[pivot_index + 1:]) # 对基准右侧元素进行排序
return left + [arr[pivot_index]] + right # 合并排序后的结果
# 示例
unsorted_list = [9, 5, 7, 2, 6, 8, 1]
sorted_list = quicksort(unsorted_list)
print(sorted_list)
```
阅读全文