解题思路

这是一个排序问题,需要根据输入的排序标识对整数数组进行升序或降序排序。

关键点

  1. 输入格式:

    • 第一行:数组元素个数 ()
    • 第二行:个整数,空格分隔 ()
    • 第三行:排序标识(0表示升序,1表示降序)
  2. 处理要求:

    • 根据排序标识选择排序方向
    • 输出排序后的数组

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        // 读入数组
        vector<int> nums(n);
        for (int i = 0; i < n; i++) {
            cin >> nums[i];
        }
        
        // 读入排序标识
        int flag;
        cin >> flag;
        
        // 根据标识排序
        if (flag == 0) {
            // 升序
            sort(nums.begin(), nums.end());
        } else {
            // 降序
            sort(nums.begin(), nums.end(), greater<int>());
        }
        
        // 输出结果
        for (int i = 0; i < n; i++) {
            cout << nums[i] << " ";
        }
        cout << endl;
    }
    return 0;
}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            // 读入数组长度
            int n = sc.nextInt();
            
            // 读入数组
            Integer[] nums = new Integer[n];
            for (int i = 0; i < n; i++) {
                nums[i] = sc.nextInt();
            }
            
            // 读入排序标识
            int flag = sc.nextInt();
            
            // 根据标识排序
            if (flag == 0) {
                // 升序
                Arrays.sort(nums);
            } else {
                // 降序
                Arrays.sort(nums, Collections.reverseOrder());
            }
            
            // 输出结果
            for (int num : nums) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}
while True:
    try:
        # 读入数组长度
        n = int(input())
        
        # 读入数组
        nums = list(map(int, input().split()))
        
        # 读入排序标识
        flag = int(input())
        
        # 根据标识排序
        nums.sort(reverse=(flag == 1))
        
        # 输出结果
        print(" ".join(map(str, nums)))
        
    except:
        break

算法及复杂度

算法分析

  1. 输入处理:

    • 读取数组长度
    • 读取数组元素
    • 读取排序标识
  2. 排序过程:

    • 使用标准库排序函数
    • 根据标识决定升序或降序
    • 输出排序后的结果

复杂度分析

  • 时间复杂度: - 使用标准排序算法
  • 空间复杂度: - 需要存储输入数组