已知无序序列 arr=[3, 8, 19,20, 4, 9, 16, 5,10] 请用快速排序算法对该序列进行排序。 要求书写排序过程。
时间: 2024-12-29 16:36:43 浏览: 9
快速排序是一种常用的分治算法,它通过选择一个基准值(pivot),然后将数组分为两部分,一部分包含所有小于基准值的元素,另一部分包含所有大于基准值的元素,最终递归地对这两部分再进行排序。以下是使用Python描述的快速排序过程,以给定的无序序列 `arr` 为例:
```python
def quicksort(arr):
if len(arr) <= 1: # 基准条件,序列只有一个元素或者为空,无需排序
return arr
pivot = arr[0] # 首元素作为第一次划分的基准
less_than_pivot = [x for x in arr[1:] if x < pivot] # 存储小于基准的元素
greater_than_pivot = [x for x in arr[1:] if x >= pivot] # 存储大于等于基准的元素
# 递归地对左右两部分进行排序
sorted_left = quicksort(less_than_pivot)
sorted_right = quicksort(greater_than_pivot)
return sorted_left + [pivot] + sorted_right # 返回排序后的序列
# 测试输入
arr = [3, 8, 19, 20, 4, 9, 16, 5, 10]
sorted_arr = quicksort(arr)
print("Sorted array:", sorted_arr)
```
在这个例子中,每次分割都会导致数组长度减半,直到只剩下一个元素或空数组,整个过程可以理解为一棵二叉树结构。最后,我们将排好序的小于基准的部分、基准值本身和大于基准的部分连接起来得到完整的排序序列。
阅读全文