/
hel_bumer
/
DZ_sort
Обзор
Документация
Войти
/
hel_bumer
/
DZ_sort
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Main.java
89 строк
3 KB
hel_bumer
dz_sortirovki
03 фев 2026, 10:12
Верифицирован
03 фев 2026, 10:12
4c52e40
Код
Авторство
О чём код?
//В стране есть n региональных команд, каждая состоит //из 10 игроков, у каждого игрока есть рейтинг. Вам надо // написать программу, которая из всех региональных команд соберёт //команду национальную - топ-10 игроков по рейтингу. Каждая команда задаётся в виде //массива с рейтингами игроков в порядке убывания. //Ваша программа должна вывести такой же массив для национальной команды. //Целевая асимптотика: O(n) времени, константная память. import java.io.*; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { int[][] teams = { {45, 31, 24, 22, 20, 17, 14, 13, 12, 10}, {31, 18, 15, 12, 10, 8, 6, 4, 2, 1}, {51, 30, 10, 9, 8, 7, 6, 5, 2, 1} }; int[] nationalTeam = mergeAll(teams); System.out.println(Arrays.toString(nationalTeam)); // [51, 45, 31, 31, 30, 24, 22, 20, 18, 17] } /** * Метод для слияния всех команд в одну национальную */ public static int[] mergeAll(int[][] teams) { System.out.println("=== Начало mergeAll ==="); // Ваш код // if (teams.length == 0) { return new int[0]; } // Начинаем с первой команды int[] result = teams[0]; System.out.println("Начальный result: " + Arrays.toString(result)); // Последовательно сливаем с остальными командами for (int i = 1; i < teams.length; i++) { System.out.println("\n--- Слияние " + i + " ---"); System.out.println("Сливаем result: " + Arrays.toString(result)); System.out.println("С командой " + i + ": " + Arrays.toString(teams[i])); System.out.println("Новый result: " + Arrays.toString(result)); result = merge(result, teams[i]); } System.out.println("\n=== Конец mergeAll ==="); return result; } /** * Метод для слияния двух команд в одну */ public static int[] merge(int[] teamA, int[] teamB) { System.out.println(" Вход в метод merge"); // Ваш код int[] merged = new int[10]; int i = 0; int j = 0; int k = 0; while (k < 10 && i < teamA.length && j < teamB.length) { if (teamA[i] >= teamB[j]) { merged[k] = teamA[i]; i++; } else { merged[k] = teamB[j]; j++; } k++; } // Если из teamA еще остались элементы и нужно добрать до 10 // while (k < 10 && i < teamA.length) { // merged[k] = teamA[i]; // i++; // k++; // } // while (k < 10 && j < teamB.length) { // merged[k] = teamB[j]; // j++; // k++; // } return merged; } }