Мне нужно сделать массив в который я должна поместить 10 000 000 000 мелких чисел. Я дошла к тому что это не возможно.
Код рабочий, если место LONG везде поставить INT. Но в int не помещается это количество чисел. Так, объясню что я делаю в этом коде. У меня есть двухмерный массив, мне нужно его отсортировать, мне кажется что проще всего будет это сделать через обычный массив и исходя из этого у меня и возникла проблема с "10 000 000 000".
Можно ли это сделать так как я планировала, то есть не особо меняя код? Если нет тогда прошу совет.
Сложные ответы не приветствуются потому что я только начала программировать и мало что понимаю в различных функциях.
int n = sc.nextInt();
int m = sc.nextInt();
if (n>=100000 || m>=100000) System.exit(0);
int [][] array = new int [n][m];
long f =n*m;
int [] arraypomoc = new int [n*m];
long poc =0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
array[i][j]=sc.nextInt();
arraypomoc[poc]=array[i][j];
poc++;
}
}
for (long i = 0; i < arraypomoc.length-1; i++) {
for (long j = 0; j < arraypomoc.length-i-1; j++) {
if(arraypomoc[j]>arraypomoc[j+1]){
int temp = arraypomoc[j];
arraypomoc[j]=arraypomoc[j+1];
arraypomoc[j+1]=temp;
}
}
}
Несложный ответ:
int getArrayPomoc(int [][] array, int m, long index) {
int i = index / m;
int j = index % m;
return array[i][j];
}
void setArrayPomoc(int [][] array, int m, long index, int value) {
int i = index / m;
int j = index % m;
array[i][j] = value;
}
void sort2dArrayAs1d(int [][] array, int n, int m) {
long f = n * m;
for (long i = 0; i < f - 1; i++) {
for (long j = 0; j < f - i - 1; j++) {
int vj = getArrayPomoc(array, m, j);
int vj1 = getArrayPomoc(array, m, j + 1);
if(vj > vj1){
setArrayPomoc(array, m, j, vj1);
setArrayPomoc(array, m, j + 1, vj);
}
}
}
}
int compareArrays(int [][] a, int [][] b, int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < b[i][j]) {
return -1;
} else if (a[i][j] < b[i][j]) {
return 1;
}
}
}
return 0;
}
...
int [][] a = new int [n][m];
int [][] b = new int [n][m];
// initialize arrays a and b
sort2dArrayAs1d(a, n, m);
sort2dArrayAs1d(b, n, m);
// compare arrays a and b
int result = compareArrays(a, b, n, m);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создал новое обновление, но оно не прошло тесты на google playc сообщением: