蓝桥杯试题 历届真题 双向排序【第十二届】【java省赛】

99 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int length = scanner.nextInt(); //数组长度
        int number = scanner.nextInt(); //操作次数

        int[] arr = new int[length];

        //根据输入的length初始化数组
        for(int i = 0; i < length; i++){
            arr[i] = i + 1;
        }
        //根据输入的number控制循环的次数
        for(int i = 0; i < number; i++){
            int flag = scanner.nextInt();   //0表示降序,1表示升序
            int index = scanner.nextInt();  //操作的数组元素个数
            if(flag == 0){  //进行降序操作,将前index个数降序
                //先将前index个数组元素升序排序
                Arrays.sort(arr,0,index);
                //再将这些元素执行降序排序
                for(int first = 0, end = index - 1; first < end; first++, end--){
                    int temp = arr[first];
                    arr[first] = arr[end];
                    arr[end] = temp;
                }
            }else{
                //降序操作,将后index个数升序
                Arrays.sort(arr,index - 1,length);
            }
        }
        //输出数组
        for(int i = 0; i < length; i++){
            System.out.print(arr[i] + " ");
        }

    }
}

 评测结果: