解题思路:
注意事项:
引用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 人评分
printf基础练习2 (C++代码)(受教了,,%#o和%#x的用途)三人行,必有我师,,多看题解会有收获浏览:1912 |
【偶数求和】 (C语言代码)浏览:674 |
简单的a+b (C语言代码)浏览:385 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:539 |
Cylinder (C语言描述+详细分析)浏览:3374 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |
字符串的输入输出处理 (C语言代码)浏览:1085 |
GC的苦恼 (C语言代码)浏览:672 |
找出最长的字符串来 (C语言代码)浏览:1840 |
数列排序 (C语言代码)浏览:674 |