对待排序序列使用快速排序算法进行排序,计算第一次划分之后分界元素在序列中的位置和最终排序结果(划分和分界元素的概念参照课本)(在序列中的位置跟书上一致,从1而不是从0开始) 【输入形式】 序列元素个数,序列 【输出形式】 第一次划分之后分界元素的位置,最终排序结果 【样例输入】 5 0 2 1 -1 -2 【样例输出】 3 -2 -1 0 1 2
时间: 2023-12-14 22:37:12 浏览: 51
以下是快速排序的Python代码实现:
```python
def quick_sort(arr, left, right):
if left >= right:
return
pivot_index = partition(arr, left, right)
quick_sort(arr, left, pivot_index-1)
quick_sort(arr, pivot_index+1, right)
def partition(arr, left, right):
pivot = arr[left]
low, high = left, right
while low < high:
while low < high and arr[high] >= pivot:
high -= 1
arr[low] = arr[high]
while low < high and arr[low] <= pivot:
low += 1
arr[high] = arr[low]
arr[low] = pivot
return low
```
使用以上代码实现快速排序,代码中的 partition 函数表示划分过程,该函数返回分界元素的位置。
根据输入形式可以编写如下代码:
```python
n = int(input())
arr = list(map(int, input().split()))
quick_sort(arr, 0, n-1)
print(partition(arr, 0, n-1)+1)
print(*arr)
```
其中,`*arr` 表示将列表中的所有元素按顺序打印输出。
以样例输入为例,运行结果为:
```
3
-2 -1 0 1 2
```
可以看到,第一次划分之后分界元素的位置为 3,最终排序结果为 -2 -1 0 1 2。