drowning


私信TA

用户名:dotcpp0703029

访问量:313

签 名:

拿下蓝桥杯!

等  级
排  名 29078
经  验 525
参赛次数 0
文章发表 5
年  龄 19
在职情况 学生
学  校 广州大学
专  业 软件工程

  自我简介:

解题思路:



注意事项:

引用AI:
Arrays.sort() 是 Java 中用于对数组进行排序的方法,它提供了多种重载形式以适应不同的排序需求。最常用的形式是对数组中的元素进行升序排序。
基本用法如下:
javaCopy codeint[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr); // 对数组进行升序排序
在这个例子中,Arrays.sort() 方法会将数组 arr 中的元素按照升序排列,即结果为 {1, 1, 2, 3, 4, 5, 5, 6, 9}。
然而,对于二维数组,Arrays.sort() 方法提供了一个重载形式,可以通过传递一个 Comparator 对象来指定排序规则。Comparator 接口是一个函数式接口,它定义了用于比较两个对象的方法 compare()。
例如,对二维数组进行排序可以这样写:
javaCopy codeint[][] arr = { {1, 2}, {3, 4}, {2, 3}, {4, 5} };
Arrays.sort(arr, (o1, o2) -> o1[0] - o2[0]); // 根据二维数组中每个子数组的第一个元素进行升序排序
在这个例子中,我们传递了一个 lambda 表达式作为第二个参数,这个 lambda 表达式实际上是一个 Comparator 对象。它定义了比较规则,即根据每个子数组的第一个元素进行升序排序。这样,排序后的数组将按照每个子数组的第一个元素的大小进行排列。


参考代码:

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

//2022年第十三届蓝桥杯大赛软件类决赛-Java大学B组真题-C题-左移右移
public class Main{
    public static void main(String[] args) {
        /*二维数组初始化*/
        Scanner sc=new Scanner(System.in);
        //   N:数组长度    M:操作次数
        int N= sc.nextInt();
        int M= sc.nextInt();
        int c=1;
        int [][] arr=new int[N][2];
        for (int i=0;i<N;i++){
            for (int j=0;j<2;j++){
                arr[i][j]=c;
            }
            //c使用两次,因为是二维数组
            c++;
        }

        /*输入L(向左移动),R(向右移动)并进行标记,为什么是从0和N+1开始?因为数组元素范围是1——n*/
        int l=0;int r=N+1;

        while ((M--)>0){
            String s=sc.next();
            int a= sc.nextInt();
            /*对其中的一行被移动的数字标一个位置*/
            if (s.equals("L")){
                arr[a-1][0]=l;
                l--;
            }else{
                arr[a-1][0]=r;
                r++;
            }
        }

        /*用Array.sort进行数组排序*/
        Arrays.sort(arr,(o1, o2) ->{
            return o1[0]-o2[0];
        });

        /*输出数组*/
        for (int i=0;i<N;i++){
            System.out.print(arr[i][1]+" ");
        }

    }
}


 

0.0分

2 人评分

  评论区

  • «
  • »