Java在二维数组中找出最大的五个数
时间: 2024-09-11 15:04:52 浏览: 45
java 求解二维数组列最小值
在Java中找出二维数组中的最大五个数,可以通过以下步骤实现:
1. 首先遍历整个二维数组,将所有的元素存入一个一维数组中。
2. 对一维数组进行排序,排序可以使用Arrays.sort()方法,该方法会根据元素的自然顺序进行升序排序。
3. 由于我们需要的是最大的五个数,可以使用一个双端队列(Deque)来存储最大的五个数。遍历排序后的一维数组,依次判断当前数是否比队列尾部的数大,如果是,则将队尾元素移除,并将当前元素加入队列的头部。这样可以保证队列头部始终是当前最大的五个数。
4. 遍历完成后,队列中的元素即为最大的五个数,但是它们是按照最大到最小的顺序排列的,若需要从小到大排序,则需要反转队列。
以下是实现该逻辑的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Deque;
import java.util.ArrayDeque;
import java.util.Arrays;
public class MaxFiveNumbers {
public static void findTopFiveNumbers(int[][] array) {
// 将二维数组的所有元素放入一维数组中
ArrayList<Integer> list = new ArrayList<>();
for (int[] row : array) {
for (int num : row) {
list.add(num);
}
}
// 对一维数组进行排序
Collections.sort(list);
// 使用双端队列存储最大的五个数
Deque<Integer> deque = new ArrayDeque<>();
for (int num : list) {
// 保证队列中始终只有五个元素
if (deque.size() < 5) {
deque.addFirst(num);
} else if (num > deque.peekLast()) {
deque.removeLast();
deque.addFirst(num);
}
}
// 输出最大的五个数
while (!deque.isEmpty()) {
System.out.print(deque.removeLast() + " ");
}
}
public static void main(String[] args) {
int[][] array = {
{1, 5, 9, 10, 2},
{3, 8, 7, 15, 11},
{6, 12, 4, 13, 14}
};
findTopFiveNumbers(array);
}
}
```
上述代码中,首先创建了一个ArrayList来存储所有的元素,然后使用Collections.sort()方法对元素进行排序。之后,使用一个ArrayDeque来存储最大的五个数,并通过比较和移除操作来保证队列中始终是最大的五个数。最后,通过while循环输出队列中的元素。
阅读全文