给定包含n个元素的整型数组a[1],a[2],...,a[n],利用快速排序算法对其进行递增排序,请输出排序过程,即每次Partition之后的数组。最后输出排序后的数组。每次选择所处理的子数组的第一个元素作为基准元素。 输入格式: 输入为两行,第一行为一个整数n(1<n≤1000),表示数组长度。第二行为n个空格间隔的整数,表示待排序的数组。 输出格式: 输出为若干行,每行依次输出Partition后的数组,每个元素后一个空格。最后一行输出排序后的数组。 输入样例: 5 4 5 3 2 1 输出样例: 2 1 3 4 5 1 2 3 4 5 1 2 3 4 5
时间: 2024-02-23 09:58:04 浏览: 66
实验8 一维数组(1).docx
以下是Python3的代码实现:
```python
def partition(arr, low, high):
"""
快排的 partition 过程
"""
pivot = arr[low]
i, j = low, high
while i < j:
while i < j and arr[j] >= pivot:
j -= 1
arr[i] = arr[j]
while i < j and arr[i] <= pivot:
i += 1
arr[j] = arr[i]
arr[i] = pivot
return i
def quick_sort(arr, low, high):
"""
快速排序过程
"""
if low < high:
p = partition(arr, low, high)
for num in arr:
print(num, end=' ')
print()
quick_sort(arr, low, p - 1)
quick_sort(arr, p + 1, high)
n = int(input())
arr = list(map(int, input().split()))
quick_sort(arr, 0, n - 1)
for num in arr:
print(num, end=' ')
```
输入样例:
```
5
4 5 3 2 1
```
输出样例:
```
4 1 3 2 5
2 1 3 4 5
1 2 3 4 5
```
阅读全文