В моем коде я получаю в первой строке значения n и d. N будет числом значений, которые я хочу записать, и d количеством чисел в каждой позиции n. Итак, в следующих n значениях i знакомит значения d. Цель этого упражнения - использовать сортировку вставки, но если первая координата равна ей, она сравнивает вторую, и если это повторится, то сравнивается третий и т. Д. Пример: Вход:InsertionSort с использованием многомерного массива
5 3
1 1 1
1 0 1
1 1 0
0 1 1
0 1 0
Выход:
0 1 0
0 1 1
1 0 1
1 1 0
1 1 1
Это мой код:
public static void main(String[] args) {
int n,d,aux;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
d = sc.nextInt();
int tab [][] = new int[n][d];
for(int i=0;i<n;i++){
for(int j=0;j<d;j++){
aux = sc.nextInt();
tab[i][j] = aux;
}
}
insertionSort(tab,d);
System.out.println("---");
for(int u=0;u<tab.length;u++){
for(int y=0;y<d;y++){
System.out.print(tab[u][y]+" ");
}
System.out.println();
}
}
public static void insertionSort(int tab[][],int d){
int i,j;
int pos = 0;
int tmp [][] = new int[1][d];
for(i = 1;i < tab.length;i++)
{
for(int k=0;k<d;k++)
tmp[0][k] = tab[i][k];
for(j = i; j>0 && tmp[0][0] <= tab[j-1][0];j--)
{
while(tmp[0][pos] == tab[j-1][pos] && pos+1<d){
pos++;
if(tmp[0][pos] < tab[j-1][pos]){
pos=0;
break;
}
}
if(pos==0){
for(int k=0;k<d;k++)
tab[j][k] = tab[j-1][k];
}
}
for(int k=0;k<d;k++)
tab[j][k] = tmp[0][k];
pos = 0;
}
}
Проблема заключается в том, что мой выход неправильно:
0 1 0
0 1 1
1 1 0
1 1 1
1 1 1
где код для печать массива? я не могу видеть это – piyushj
Я сейчас поставлю его, я отредактирую –
Знаете ли вы, что не так? –