一、问题描述
输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)
输入描述:
第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序
输出描述:
输出排好序的数字
示例1
# 输入:
8
1 2 4 9 3 55 64 25
0
5
1 2 3 4 5
1
# 输出:
1 2 3 4 9 25 55 64
5 4 3 2 1
二、代码实现
def QSup(arr, start, end):
if start > end:
return arr
pivot = arr[start]
left,right = start,end
while left<right:
while arr[right]>pivot and left<right:
right-=1
arr[left] = arr[right]
while arr[left]<=pivot and left<right:
left+=1
arr[right] = arr[left]
arr[right] = pivot
QSup(arr, start, left-1)
QSup(arr, left+1, end)
return arr
def QSdown(arr, start, end):
if start > end:
return arr
pivot = arr[start]
left,right = start,end
while left<right:
while arr[right]<=pivot and left<right:
right-=1
arr[left] = arr[right]
while arr[left]>pivot and left<right:
left+=1
arr[right] = arr[left]
arr[right] = pivot
QSdown(arr, start, left-1)
QSdown(arr, left+1, end)
return arr
while True:
try:
N = int(input())
numbers = list(map(int, input().strip().split()))
tag = input()
if tag == '0':
results = QSup(numbers, 0, len(numbers)-1)
else:
results = QSdown(numbers, 0, len(numbers)-1)
print(" ".join([str(i) for i in results]))
except:
break
网友评论