
[JAVA] ДАНА ВЕЩЕСТВЕННАЯ МАТРИЦА РАЗМЕРОМ 10Х40. УПОРЯДОЧИТЬ ЕЕ СТРОКИ ПО УБЫВАНИЮ СУММЫ ИХ
ЭЛЕМЕНТОВ

Ответы на вопрос

public class MyClass {
public static void main(String args[]) {
int dimention1 = 10;
int dimention2 = 5;//40
double[][] matrix = new double[dimention1][dimention2];
fill(matrix);
print(matrix);
matrix = sort(matrix, getOrder(matrix));
print(matrix);
}
private static double[][] sort(double[][]matrix, int[] order)
{
double[][] ret = new double[matrix.length][matrix[0].length];
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
ret[i][j] = matrix[order[i]][j];
}
}
return ret;
}
private static void fill(double[][] matrix)
{
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
matrix[i][j] = Math.random()*10;
}
}
}
private static int[] getOrder(double[][] matrix)
{
double[] sums = new double[matrix.length];
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
sums[i]+=matrix[i][j];
}
}
int[] order = new int[sums.length];
for (int i=0;i<sums.length;i++ )
{
order[i] = i;
}
for (int i=0;i<sums.length;i++ )
{
for (int j=i+1;j<sums.length;j++ )
{
if(sums[i]<sums[j])
{
double tmp1 = sums[i];
int tmp2 = order[i];
sums[i] = sums[j];
order[i] = order[j];
sums[j] = tmp1;
order[j] = tmp2;
}
}
}
return order;
}
private static void print(double[][] matrix )
{
for (int i=0;i<matrix.length;i++ )
{
double sum = 0.0;
for (int j=0;j<matrix[i].length;j++ )
{
System.out.print(matrix[i][j]+" ");
sum+=matrix[i][j];
}
System.out.println(" sum: "+sum);
}
System.out.println();
}
}



Для упорядочивания строк вещественной матрицы размером 10х40 по убыванию суммы их элементов вам потребуется написать код на Java. Вот пример, как это можно сделать:
javaimport java.util.Arrays;
public class MatrixSorting {
public static void main(String[] args) {
double[][] matrix = new double[10][40];
// Заполнение матрицы случайными значениями (для примера)
fillMatrix(matrix);
System.out.println("Исходная матрица:");
printMatrix(matrix);
// Упорядочиваем строки по убыванию суммы элементов
sortRowsBySum(matrix);
System.out.println("\nМатрица после упорядочивания:");
printMatrix(matrix);
}
private static void fillMatrix(double[][] matrix) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = Math.random() * 100; // Заполнение случайными значениями от 0 до 100 (можно изменить диапазон)
}
}
}
private static void sortRowsBySum(double[][] matrix) {
// Используем метод сравнения, чтобы отсортировать строки по убыванию суммы элементов
Arrays.sort(matrix, (row1, row2) -> Double.compare(getSum(row2), getSum(row1)));
}
private static double getSum(double[] row) {
double sum = 0;
for (double element : row) {
sum += element;
}
return sum;
}
private static void printMatrix(double[][] matrix) {
for (double[] row : matrix) {
for (double element : row) {
System.out.printf("%.2f ", element);
}
System.out.println();
}
}
}
Примечание:
- В приведенном примере мы заполняем матрицу случайными значениями для демонстрации. Вы можете заменить эту часть кода на свою логику заполнения матрицы, если у вас уже есть данные.
- Мы используем метод
Arrays.sort
для сортировки строк матрицы, передавая собственный компаратор, который сравнивает строки по убыванию суммы их элементов. - Для суммирования элементов строки мы используем отдельный метод
getSum
, чтобы сделать код более читаемым.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili