Как отсортировать всю строку с другой строкой ввода в JAVA? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть проблема, чтобы поделиться с вами, ребята, надеясь на лучший ответ с объяснением,

Ввод

2 5

5 1

2 1

3 1

1 1

4 1

Здесь '5' в первой строке - номер теста случаи. Предположим, если я возьму в качестве примера вторую строку и третью строку, и я бы хотел поменять местами вторую строку с третьей, возможно ли это? я знаю, как поменять одно число на другое с помощью сортировки по выделению, сортировки по пузырям и т. д. c ... но не знаю, как поменять все целиком ..

что я имею в виду под всем этим ... .

3 1

1 1

 for (int i = 0 ;i< array.length; i++){
  int min = i;

  for (int j = i+2; j<array.length; j++){
    if (array[j] < array[min]){
      min = j;
    }
  }
  char temp = array[min];
  array[min] = array[i][j];
  array[i][j] =  temp;

Какое обновление мне нужно сделать в моем коде сортировки, чтобы поменять все это?

1 Ответ

1 голос
/ 06 февраля 2020

Из строки array[min] = array[i][j]; Я думаю, вам нужно понять, как сначала работают массивы. Вы не можете присвоить элемент (значение) массиву.

Предполагая, что у вас есть входные данные в 2d массиве, как показано ниже:

array = {
          {5, 1},
          {2, 1},
          {3, 1},
          {1, 1},
          {4, 1}
        }

Вы можете отсортировать их, используя встроенный вид Arrays в Java с простым компаратором, например:

Arrays.sort( array, new Comparator<int[]>() {
   @Override
   public int compare( int[] a, int [] b ) {
      return a[0] - b[0]; //you compare only first elements
   }
});

Если вы видите выше, он сравнивает только первые элементы, и массив будет отсортирован на основе первого значения в каждом элементе .

Arrays.sort() использует версию быстрой сортировки и, следовательно, должна быть более эффективной, чем выделение или пузырьковая сортировка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...