JavaScript

Программирование Джава. Написать код на упорядочивание массивов.

Здравствуйте! Помогите пожалуйста решить задачу!
Массивы A= (-3,7,8,10,15); B= (4,6,8,16). упорядочены по возрастанию их элементов.
Объединить эти массивы в один массив C, состоящий из положительных элементов массивов A и B. В массиве C элементы расположить в порядке убывания
Вот пример кода на Java, который решает данную задачу:
 import java.util.*; 

public class Main {
public static void main(String[] args) {
int[] A = {-3, 7, 8, 10, 15};
int[] B = {4, 6, 8, 16};
int[] C = new int[A.length + B.length];
int indexA = 0, indexB = 0, indexC = 0;

// Объединение массивов A и B в массив C
while (indexA < A.length && A[indexA] < 0) {
indexA++;
}
while (indexB < B.length && B[indexB] < 0) {
indexB++;
}
while (indexA < A.length && indexB < B.length) {
if (A[indexA] > B[indexB]) {
C[indexC] = A[indexA];
indexA++;
} else {
C[indexC] = B[indexB];
indexB++;
}
if (C[indexC] > 0) {
indexC++;
}
}
while (indexA < A.length) {
if (A[indexA] > 0) {
C[indexC] = A[indexA];
indexC++;
}
indexA++;
}
while (indexB < B.length) {
if (B[indexB] > 0) {
C[indexC] = B[indexB];
indexC++;
}
indexB++;
}

// Сортировка массива C в порядке убывания
Arrays.sort(C, 0, indexC);
for (int i = 0; i < indexC / 2; i++) {
int temp = C[i];
C[i] = C[indexC - i - 1];
C[indexC - i - 1] = temp;
}

// Вывод массива C на экран
System.out.println(Arrays.toString(C));
}
}
В результате выполнения этого кода будет выведен отсортированный массив C, состоящий из положительных элементов массивов A и B, расположенных в порядке убывания.
Дмитрий Очнев
Дмитрий Очнев
5 964
Лучший ответ
Данил Зубачёв Огромное спасибо!!!! Все работает!
Вот тебе красивый код на Futures (async). CompletableFuture нужны тут для асинхронной сортировки массивов A и B, после чего объединяем их в массив C - меньше нагружает систему, и выглядит как будто написано опытным кодером.
А код выше использует "while" - он очень неоптимизирован. While используется там во всем коде.
 import java.util.Arrays; 
import java.util.concurrent.CompletableFuture;

public class SortArrays {
public static void main(String[] args) {
int[] A = {-3, 7, 8, 10, 15};
int[] B = {4, 6, 8, 16};

CompletableFuture aFuture = CompletableFuture.supplyAsync(() -> {
Arrays.sort(A);
return A;
});

CompletableFuture bFuture = CompletableFuture.supplyAsync(() -> {
Arrays.sort(B);
return B;
});

CompletableFuture combinedFuture = aFuture.thenCombine(bFuture, (a, b) -> {
int[] C = new int[a.length + b.length];
int j = 0;
for (int i = a.length - 1; i >= 0; i--) {
if (a[i] > 0) {
C[j] = a[i];
j++;
}
}
for (int i = b.length - 1; i >= 0; i--) {
if (b[i] > 0) {
C[j] = b[i];
j++;
}
}

Arrays.sort(C);

return C;
});

CompletableFuture printFuture = combinedFuture.thenAcceptAsync((result) -> {
log("Отсортированный массив C:");
for (int i = result.length - 1; i >= 0; i--) {
log(result[i] + " ");
}
});

printFuture.join();
}
public static void log(String message) {
System.out.println(message);
}
}
Данил Зубачёв Спасибо большое!!!
 massiv