pta7-21 快速排序 众所周知,Keven是一个ACMer,他今天刚刚学会了快速排序,他非常开心,因为他可以快速的找到区间第K小的数字了。但是同为ACMer的JOJO看不下去了,他觉得快速排序应该是众所周知的,于是JOJO向Keven提问,问题内容如下: 你需要完成N次操作,其中所有操作都属于下面三种 1、add X,其中add是一个字符串,X是一个数字,表示将X加入到序列中。 1<= X <=200000 2、delete X,其中delete是一个字符
时间: 2024-03-01 21:54:49 浏览: 95
好的,以下是 Python 的代码示例:
```python
def quick_sort(nums, left, right):
if left >= right:
return
pivot = nums[left] # 选择第一个元素为枢轴
i, j = left, right
while i < j:
# 从右往左找第一个小于枢轴的元素
while i < j and nums[j] >= pivot:
j -= 1
nums[i] = nums[j]
# 从左往右找第一个大于枢轴的元素
while i < j and nums[i] <= pivot:
i += 1
nums[j] = nums[i]
nums[i] = pivot # 将枢轴放入正确的位置
quick_sort(nums, left, i - 1) # 对左侧子序列进行快速排序
quick_sort(nums, i + 1, right) # 对右侧子序列进行快速排序
n = int(input()) # 输入操作次数
nums = [] # 初始化序列为空列表
for i in range(n):
op = input().split() # 输入操作类型和对应的数字
if op[0] == 'add':
nums.append(int(op[1])) # 将数字添加到序列中
elif op[0] == 'delete':
nums.remove(int(op[1])) # 从序列中删除指定的数字
else: # op[0] == 'query'
k = int(op[1])
quick_sort(nums, 0, len(nums) - 1) # 对序列进行快速排序
print(nums[k - 1]) # 输出区间第 k 小的数字
```
你可以将上述代码复制到 Python 编辑器中运行,输入对应的数据即可。本程序使用了快速排序算法来对序列进行排序,并实现了向序列添加、删除元素,以及查询区间第 k 小的元素等操作。
阅读全文