0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 11
1

Сортировка столбцов массива

20.02.2020, 17:46. Показов 3220. Ответов 12
Метки java (Все метки)

Author24 — интернет-сервис помощи студентам
Объявите двумерный целочисленный массив, в котором n строк по m элементов. Выпол-ните генерацию массива случайными целыми числами из промежутка [a; b). Значения n ,m, a, b вводятся с клавиатуры. Переставьте столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность. Выведите массив на экран в ви-де таблицы дважды – до и после перестановки.

Сделал все кроме перестановки столбцов, подскажите кто знает

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.company;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
    List<List<Integer>> matrix = new ArrayList<List<Integer>>();
 
        Scanner input = new Scanner(System.in);
 
 
        System.out.println("Введите количество строк n:");
        int n = input.nextInt();
 
        System.out.println("Введите количество строк m:");
        int m = input.nextInt();
 
        int a,b;
        System.out.println("Введите промежуток чисел от a  до b:");
 
        a = input.nextInt();
        b = input.nextInt();
 
        int[] max = new int[n];
 
        for(int i = 0;i < n; i++)
        {
            List<Integer> list = new ArrayList<Integer>();;
            matrix.add( list );
            for(int j = 0;j < m; j++)
             {
                list.add(((int)(Math.random() * ((b-a)+1)+a)));
             }
 
 
        }
        System.out.println(matrix);
 
        for(int i = 0;i < n; i++)
        {
            int max1 = -999999;
            for(int j = 0;j < m; j++)
            {
              if((matrix.get(j).get(i) > max1))
              {
               max[i] = matrix.get(j).get(i);
               max1 = matrix.get(j).get(i);
              }
 
            }
 
        }
 
 
 
 
        
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2020, 17:46
Ответы с готовыми решениями:

Сортировка массива. Ошибка вывода отсортированного массива
Задание: В произвольной матрице отсортировать по убыванию элементы последовательности,...

Вычислить номер первого из столбцов массива, не содержащего отрицательных элементов
Для целочисленного ДВУХМЕРНОГО массива размерности NxM вычислить номер первого из столбцов, не...

Сортировка столбцов массива по убыванию элементов столбцов
Заполнить двумерный числовой массив A целыми числами. Вычислить сумму элементов каждого столбца...

Сортировка столбцов массива float
Всем привет! Помогите пожалуйста с заданием. У меня есть двухмерный массив float, нужно сделать...

12
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.02.2020, 17:54 2
1) написать метод для нахождения максимального элемента в столбце
2) написать метод перестановки двух столбцов
3) написать банальную сортировку пузырьком
0
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 11
20.02.2020, 17:57  [ТС] 3
такой план я сам могу составить, как-то конкретнее можно? как именно их там переставить и т.д.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.02.2020, 18:03 4
переставить первый элемент i столбца и первый элемент j столбца
переставить второй элемент i столбца и второй элемент j столбца
....
PROFIT
0
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 11
20.02.2020, 18:18  [ТС] 5
ок, гений, как переставить ВСЕ столбцы так, чтобы они образовывали возрастающую последовательность? Давай только без ответа типа "Найти максимальные элементы всех столбцов и столбец у которого минимальное такое число поставить на первое место и т.д."
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.02.2020, 18:45 6
я что не по-русски говорю? сортировка пузырьком
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
18569 / 10767 / 2896
Регистрация: 21.10.2017
Сообщений: 22,948
20.02.2020, 19:36 7
yaprog, что-типа этого и имел в ввиду уважаемый xoraxax:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package ru.ismokejc;
 
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;
 
public class Cyber {
    private int[][] matrix;
 
    public static void main(String[] args) {
        new Cyber().foo();
    }
 
    public void foo() {
        Scanner input = new Scanner(System.in);
 
        System.out.print("Введите количество строк: ");
        int n = input.nextInt();
 
        System.out.print("Введите количество солбцов: ");
        int m = input.nextInt();
 
        System.out.println("Введите промежуток чисел от a  до b: ");
        int a = input.nextInt();
        int b = input.nextInt();
 
        createAndFillRandomMatrix(n, m, a, b);
        showMatrix("***** Source matrix *****");
        bubbleSort();
        showMatrix("***** Sorted matrix *****");
    }
 
    private void bubbleSort() {
        boolean change = true;
        while (change) {
            change = false;
            for (int i = 0; i < matrix[0].length - 1; i++) {
                if (getMaxOfColumn(i) > getMaxOfColumn(i + 1)) {
                    swapColumns(i, i + 1);
                    change = true;
                }
            }
        }
    }
 
    private void showMatrix(String message) {
        System.out.println(message);
        for (int[] row : matrix) {
            for (int elem : row) {
                System.out.print(elem + "\t");
            }
            System.out.println();
        }
        System.out.println("----------------------------------------------\n");
    }
 
    private void createAndFillRandomMatrix(int rows, int cols, int start, int end) {
        matrix = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                matrix[i][j] = ThreadLocalRandom.current().nextInt(start, end);
            }
        }
    }
 
    private void swapColumns(int a, int b) {
        int temp;
        for (int i = 0; i < matrix.length; i++) {
            temp = matrix[i][a];
            matrix[i][a] = matrix[i][b];
            matrix[i][b] = temp;
        }
 
    }
 
    private int getMaxOfColumn(int col) {
        int max = Integer.MIN_VALUE;
        for (int[] row : matrix) {
            if (row[col] > max) {
                max = row[col];
            }
        }
        return max;
    }
 
}
2
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,256
21.02.2020, 01:45 8
yaprog,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.util.concurrent.ThreadLocalRandom;
 
public class Start {
    static int rows = 5;
    static int cols = 7;        
    static int[][] array = new int[cols][rows];
    static int[] max = new int[cols];
    
    public static void main(final String[] args) {      
        int rMin = 10;
        int rMax = 200;
        
        for (int i = 0; i < cols; i++) {            
            for (int j = 0; j < rows; j++) {
                array[i][j] = ThreadLocalRandom.current().nextInt(rMin, rMax);              
                
                if (array[i][j] > max[i]) {
                    max[i] = array[i][j];
                }               
            }           
        }
        
        printArray();
        
        System.out.println(">----------------------------------------------< Max Values");
        
        for (int i : max) {
            System.out.printf("%3d  ", i);
        }
        
        System.out.println();
        
        boolean toSort = true;
        
        while (toSort) {
            toSort = false;
            
            for (int i = 1; i < max.length; i++) {
                if (max[i - 1] > max[i]) {
                    toSort = true;
                    
                    int tmp = max[i - 1];
                    max[i - 1] = max[i];
                    max[i] = tmp;
                    
                    int[] tmpCol = array[i - 1];
                    array[i - 1] = array[i];
                    array[i] = tmpCol;
                }
            }
        }   
        
        System.out.println("----------------------------------------------<  Sort Max");
        
        for (int i : max) {
            System.out.printf("%3d  ", i);
        }
        
        System.out.println("\n----------------------------------------------<  Sort Array");
        
        printArray();
    }
    
    private static void printArray(){
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                String tag = " ";
                
                if (array[j][i] == max[j]) {
                    tag = "*";
                }               
                
                System.out.printf("%3d%s ", array[j][i], tag);                  
            }       
            System.out.println();
        }
    }
}
1
20 / 16 / 6
Регистрация: 15.02.2020
Сообщений: 78
21.02.2020, 14:13 9
xoraxax, Ты, с твоей репой, до сих пор надеешься что люди сюда приходят за советом, а не за готовым кодом? Да ты оптимист
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
21.02.2020, 14:41 10
Aksters, Просто xoraxax надеется что народ учиться начнет, ну или думать немногим больше чем клянчить решение задачи. Отсюда вопрос а зачем эти люди учатся если по факту они сами ничего не умеют и не хотят, как они дальше работать будут если знаний нет, что это за специалисты тогда ? Часто смотрю этот раздел и он состоит только из сообщений как создать массив Х в рамках какой то учебной программы, причем те кто спрашивают просто перебивают задание.
0
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,256
21.02.2020, 15:03 11

Не по теме:

Цитата Сообщение от Nidl Посмотреть сообщение
факту они сами ничего не умеют и не хотят, как они дальше работать будут
ИМХО они и не собираются. Это отголоски 90-ых - главное диплом есть. Вообще, в принципе многие не знают (и это наверное всегда так было, есть и будет), почему поступили туда-то или туда-то т.к. выбирать что-то надо, время ж не терпит.
Но проблема в том, что в том возрасте, в котором как принято надо делать этот выбор, вряд ли вообще можно адекватно сделать один из решающих выборов твоей жизни - выбрать профессию (начиная от всё более продолжительной инфантильности молодых поколений, и кончая доминированием не разума о гормонов).


0
2699 / 2013 / 501
Регистрация: 17.02.2014
Сообщений: 9,388
21.02.2020, 15:05 12
Цитата Сообщение от Aksters Посмотреть сообщение
за готовым кодом?
приходят явно не нормальные люди((. адекватные же, приходят обсудить свои подходы к решениям, братец!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2020, 15:47 13
Aksters, как ни странно попадаются вменяемые персонажи, редко, но бывает.
0
21.02.2020, 15:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2020, 15:47
Помогаю со студенческими работами здесь

Сортировка строк и столбцов массива
Люди добрые, кто чем может) Нужно написать не свап строк, а сортировку строк по первым элементам....

Сортировка элементов столбцов двумерного массива
у меня сортировка элементов строка двумерного массива получается, но сортировка элементов столбцов...

Сортировка по элементам столбцов двумерного массива
Помогите решить задачу : Даны три матрицы целого типа произвольной размерности (размерность...

Сортировка выбором столбцов двумерного массива
Здравствуйте! Перечитал на форуме все что только смог найти связанное с сортировкой выбором....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru