美文网首页
(python实现)输入整型数组和排序标识,对其元素按照升序或降

(python实现)输入整型数组和排序标识,对其元素按照升序或降

作者: JLGao的简书 | 来源:发表于2021-06-21 16:44 被阅读0次

一、问题描述

输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)

输入描述:

第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数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

相关文章

网友评论

      本文标题:(python实现)输入整型数组和排序标识,对其元素按照升序或降

      本文链接:https://www.haomeiwen.com/subject/ezgwsltx.html