Как поместить в массив 10 000 000 000 чисел?

132
14 августа 2019, 00:30

Мне нужно сделать массив в который я должна поместить 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;
        }
    }
}
Answer 1

Несложный ответ:

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);
READ ALSO
Is not assignable to Activity

Is not assignable to Activity

MusicAdapter Class

154
java оператор И в условии [закрыт]

java оператор И в условии [закрыт]

Как сделать так чтобы в if было несколько условийнапример

122
Не проходит тест на Google Play &ldquo; Split config.х86/armeabi_v7a was defined multiple times&rdquo;

Не проходит тест на Google Play “ Split config.х86/armeabi_v7a was defined multiple times”

Создал новое обновление, но оно не прошло тесты на google playc сообщением:

97