python快速排序代码输出排序过程
时间: 2024-11-03 14:13:09 浏览: 12
Python中的快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。这里是一个简单的快速排序实现,并包含打印每一步分割过程的代码:
```python
def quick_sort(arr):
def partition(arr, low, high):
pivot = arr[low]
i = low + 1
j = high
while True:
while i <= j and arr[i] < pivot:
i += 1
while i <= j and arr[j] > pivot:
j -= 1
if i <= j:
arr[i], arr[j] = arr[j], arr[i]
else:
break
arr[low], arr[j] = arr[j], arr[low]
return j
def print_partition(arr, low, high):
print("Before:", " ".join(map(str, arr[low:high+1])))
pivot_index = partition(arr, low, high)
print("After:", " ".join(map(str, arr[low:pivot_index+1])) + " | " + " ".join(map(str, arr[pivot_index+1:high+1])))
if len(arr) <= 1:
return arr
print_partition(arr, 0, len(arr) - 1)
pivot_index = partition(arr, 0, len(arr) - 1)
quick_sort(arr[:pivot_index])
quick_sort(arr[pivot_index+1:])
return arr
# 测试数组
arr = [9, 7, 5, 11, 12, 2, 14, 3, 10, 6]
sorted_arr = quick_sort(arr)
print("Sorted array:", sorted_arr)
```
当你运行这段代码,它会按照快速排序的过程逐步分割数组并打印出每一步的结果。首先划分基准元素,再递归地处理两个子序列,直到序列长度为1或0,排序完成。
阅读全文