Я хочу сортировать двумерный массив по определенному столбцу, используя быструю сортировку. Я смог быстро выполнить сортировку для одномерного массива.Сортировка двумерного массива по столбцу с использованием быстрого сортировки
public class QuickSort1D {
public static void main(String[] args) {
int[] A = {9, 3, 10, 4, 1, 44, 12, 2, 90, 0};
int l = 0;
int r = A.length-1;
QuickSort(A, l, r);
for (int i = 0; i < A.length; i++){
System.out.print(A[i] + " ");
}
}
private static void QuickSort(int[] a, int l, int r) {
int i;
if (r > l){
i = partition(a, l, r);
QuickSort(a, l, i-1);
QuickSort(a, i+1, r);
}
}
private static int partition(int[] a, int l, int r) {
int v = a[r];
int i = l;
int j = r;
int temp;
while (i < j){
while (a[i] < v){
i = i + 1;
}
while ((i < j) && (a[j] >= v)){
j = j - 1;
}
temp = a[i];
if (i < j){
a[i] = a[j];
a[j] = temp;
}else{
a[i] = a[r];
a[r] = temp;
}
}
return i;
}
}
Для того, чтобы сделать это для двумерного массива, я должен будет включать в себя параметр для указанного столбца в методе QuickSort. Я не знаю, как исходить оттуда.
Например, массив изначально
{{4, 1, 3},
{6, 0, 2},
{5, 9, 8}}
и массив отсортирован по колонке 2 должен быть
{{6, 0, 2},
{4, 1, 3},
{5, 9, 8}}
Если я правильно понял, int [] temp then temp = a [i] заставляет temp хранить целую строку? – Saiyan
@Saiyan Да, это правильно. – Sibbo