powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / сортировка в двумерном массиве
14 сообщений из 14, страница 1 из 1
сортировка в двумерном массиве
    #38601078
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть массив
Код: java
1.
2.
3.
4.
5.
6.
char [][] mas1 = {{' ','3', '2', '1', '4', '5'},
                          {'3','e', 'x', 'p', 'r', 'e'},
                          {'2','s', 's', 'i', 'o', 'n'},
                          {'1','t', 'o', 'o', 'c', 'o'},
                          {'4','m', 'p', 'l', 'i', 'c'},
                          {'5','a', 't', 'e', 'd', ' '}};


сортировку по строкам нету проблемы сделать, а вот с сортировкой по столбцам не сталкивался, каким образом это можно реализовать?
должно получится что то вроде этого:
Код: java
1.
2.
3.
4.
5.
6.
char [][] mas1 = {{' ','3', '2', '1', '4', '5'},
                          {'1','a', 'o', 'e', 'c', 'c'},
                          {'2','e', 'p', 'i', 'd', 'e'},
                          {'3','m', 's', 'l', 'i', 'n'},
                          {'4','s', 't', 'o', 'o', 'o'},
                          {'5','t', 'x', 'p', 'r', ' '}};


' ' - учитывать не надо.
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... тоже самое только max[i][j] переворачивается в max[j][i]
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601242
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, таким образом поменять?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 char min;
        for (int l=0; l<mas.length; l++)
        for (int i =0 ; i<mas[i].length; i++){
            for (int j = 0; j<mas[j].length; j++){
                if (mas[l][i] < mas[l][j]){
                    min = mas[l][i];
                    mas[l][i] = mas[l][j];
                    mas[l][j] = min;
                }
            }
        }


поменял на:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 char min;
        for (int l=0; l<mas.length; l++)
        for (int i =0 ; i<mas[i].length; i++){
            for (int j = 0; j<mas[j].length; j++){             
                if (mas[i][l] < mas[j][l]){
                    min = mas[i][l];
                    mas[i][l] = mas[j][l];
                    mas[j][l] = min;
                }
            }
        }


если так поменять, то не работает
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601247
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И циклы поменять местами. Внутренний на внешний и наоборот.
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601251
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
Код: java
1.
for (int j = 0; j<mas[j].length; j++){ 

с
Код: java
1.
for (int l=0; l<mas.length; l++)

?
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты бегал по строке матрицы. Теперь тебе надо бегать по столбцу.
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601291
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
char min;
        for (int l=0; l<mas[l].length; l++)
        for (int i =0 ; i<mas.length; i++){
            for (int j = 0; j<mas.length; j++){
                if (mas[i][l] < mas[j][l]){
                    min = mas[i][l];
                    mas[i][l] = mas[j][l];
                    mas[j][l] = min;
                }
            }
        }


Вроде должно быть что то вроде этого, но все равно что то не так
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601319
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
martin_12, ты наверное думаешь что "что-то не так" - это ценное указание?
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601326
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, нет конечно, вот что мне возвращается:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at ZIKS.DvoynayaPerestanovka.main(DvoynayaPerestanovka.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38601768
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
martin_12,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
   for (int l=0; l<mas.length; l++)
      for (int i =0 ; i<mas.length; i++)
          for (int j = 0; j<mas[i].length; j++){
              if (mas[i][l] < mas[j][l]){
                  min = mas[i][l];
                  mas[i][l] = mas[j][l];
                  mas[j][l] = min;
              }
          }
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38602387
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wvetal, если в массиве не равное количество элементов в строке и столбце, то выскакивает вот такое:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at ZIKS.DvoynayaPerestanovka.main(DvoynayaPerestanovka.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

а если равное оно просто не сортирует, по крайней мере не столбцы сортирует
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38602389
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wvetal, сорри, сортировка работает, а вот если не одинаковое количество элементов в строках и столбцах, то возникает ошибка
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38602908
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
martin_12wvetal, сорри, сортировка работает, а вот если не одинаковое количество элементов в строках и столбцах, то возникает ошибка
Приведи пример входного массива с разным количеством элементов в строках и столбцах, и ожидаемый результат после сортировки по столбцам.
А то если, например, массив имеет вид:
Код: java
1.
2.
3.
4.
5.
6.
char [][] mas = {{' ','3', '2', '1', '4', '5'},
                          {'3','e', 'x', 'p'},
                          {'2','s', 's', 'i', 'o', 'n'},
                          {'1','t', 'o', 'o'},
                          {'4','m', 'p', 'l', 'i', 'c'},
                          {'5','a', 't', 'e'}};


То, не совсем однозначно можно отсортировать места где есть пропуски элементов (если мы говорим о сортировке по столбцам).

И еще, ты приводил пример сортировки по строкам:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
char min;
        for (int l=0; l<mas.length; l++)
        for (int i =0 ; i<mas[i].length; i++){
            for (int j = 0; j<mas[j].length; j++){
                if (mas[l][i] < mas[l][j]){
                    min = mas[l][i];
                    mas[l][i] = mas[l][j];
                    mas[l][j] = min;
                }
            }
        }


Правильней будет организовать так (тогда можно будет сортировать по строкам с разным количеством элементов):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    	char min;
    	
    	for(int l=0; l<mas.length; l++){
		    for(int i = 0; i < mas[l].length - 1; i++){
		    	for(int j = 0; j < mas[l].length - i - 1; j++){
		    		if(mas[l][j] > mas[l][j + 1]){
		    			min = mas[l][j];
		    			mas[l][j]=mas[l][j+1];
		    			mas[l][j + 1] = min;
		    	    }
		    	}
		    }
    	}
...
Рейтинг: 0 / 0
сортировка в двумерном массиве
    #38602940
martin_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wvetal,
Код: java
1.
2.
3.
4.
5.
6.
char [][] mas1 = {{' ','3', '2', '1', '4', '5'},
                                                   {'1','e', 'x', 'p', 'r', 'e'},
                                                   {'3','s', 's', 'i', 'o', 'n'},
                                                   {'2','t', 'o', 'o', 'c', 'o'},
                                                   {'4','m', 'p', 'l', 'i', 'c'},
                                                   {'5','a', 't', 'e', 'd'}};


элемент mas1[0][0] вообще можно не учитывать, он для того чтоб выровнять массив
а должно получится так:
{' ','1', '2', '3', '4', '5'},
{'1','p', 'x', 'e', 'r', 'e'},
{'2','0', 'o', 't', 'c', 'o'},
{'3','i', 's', 's', 'o', 'n'},
{'4','l', 'p', 'm', 'i', 'c'},
{'5','e', 't', 'a', 'd'}}
сортируются только mas1[0][i] и mas1[j][0] а по результатам сортировки переставляются остальные строки и столбци
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / сортировка в двумерном массиве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]