Было бы более эффективно разделить алгоритм на два отдельных этапа. (Предупреждение: псевдокод вперед)
Сначала создайте n-1 списки, добавив остальные элементы в i-й элемент. Это можно сделать параллельно для каждого списка. Обратите внимание, что результирующие списки будут отсортированы.
newArray = array(array.length);
for (i = 0 ; i < array.length ;i++ ) {
newArray[i] = array(array.length - i - 1);
for (j = 0; j < array.length - i; j++) {
newArray[i][j] = array[i] + array[j + i];
}
}
Второе использование сортировка слиянием в для объединения полученных списков. Вы можете сделать это параллельно, например, объединить newArray [0] - newArray [i], newArray [2] - newArray [1-i], ... и снова, пока у вас не будет только одного списка.