У меня есть двумерный массив, и я хочу, чтобы пузырь отсортировал его строки по значению второго столбца.Строки массива BubbleSort 2D по определенным значениям столбца
Я принимаю Arrival time
и Service time
значения от пользователя и хочу, чтобы пузырь отсортировал его по значению второго столбца (Arrival time
).
Первый столбец для номера процесса.
static int[][] atst = new int[5][5];
for (int i = 0; i < atst.length; i++) {
System.out.print("Arrival time for process " + i + ": ");
atst[i][1] = in.nextInt();
}
for (int i = 0; i < atst.length; i++) {
System.out.print("Enter service Times for process " + i + ": ");
atst[i][2] = in.nextInt();
}
System.out.println("Before sorting: " + Arrays.deepToString(atst));
for (int i = 0; i < atst.length; i++) {
for (int j = 1; j < (atst.length - 1); j++) {
if (atst[j - 1][1] > atst[j][1]) { // Then swap!
int[] tempRow = atst[j - 1];
atst[j - 1] = atst[j];
atst[j] = tempRow;
}
}
}
System.out.println("After sorting :" + Arrays.deepToString(atst));
public static void swapRows(int[][] array, int rowA, int rowB) {
int[] tempRow = array[rowA];
array[rowA] = array[rowB];
array[rowB] = tempRow;
}
Метод swapRows
работает, но это не сортирует массив полностью.
результат:
Arrival time for process 0: 5
Arrival time for process 1: 4
Arrival time for process 2: 3
Arrival time for process 3: 2
Arrival time for process 4: 1
Enter service Times for process 0: 2
Enter service Times for process 1: 3
Enter service Times for process 2: 4
Enter service Times for process 3: 5
Enter service Times for process 4: 2
Before sorting: [[0, 5, 2, 0, 0], [1, 4, 3, 0, 0], [2, 3, 4, 0, 0], [3, 2, 5, 0, 0], [4, 1, 2, 0, 0]]
After sorting :[[3, 2, 5, 0, 0], [2, 3, 4, 0, 0], [1, 4, 3, 0, 0], [0, 5, 2, 0, 0], [4, 1, 2, 0, 0]]
В то время как результат должен быть таким:
[[4, 1, 2, 0, 0],[3, 2, 5, 0, 0],[2, 3, 4, 0, 0],[1, 4, 3, 0, 0],[0, 5, 2, 0, 0]]
Вы делаете только один проход по массиву. [Bubblesort] (http://en.wikipedia.org/wiki/Bubble_sort) не O (n) это O (n^2). Кажется, вам не хватает еще одного цикла. Посмотрите на связанный псевдокод в статье wikipedia и сравните с вашим кодом. –
@JamesMontagne Еще раз посмотрим на вопрос, я обновляю его. – Sajad