2016-08-05 2 views
1

У меня есть эти массивы.Swift. Альтернативные элементы в 2 массивах merge

let array1 = [10, 20, 30, 40, 50, 55] 
let array2 = [11, 22, 33] 

Я хочу, чтобы этот вывод только в одном массиве

[10, 11, 20, 22, 30, 33, 40, 50, 55] 

В случае второй размер массива больше, чем первый.

let array1 = [10, 20, 30] 
let array2 = [11, 22, 33, 45, 56, 78] 

Выход

[10, 11, 20, 22, 30, 33, 45, 56, 78] 

Есть ли способ без петли на массивы в для?

Благодаря

+1

Являются ли исходные массивы всегда отсортированными в порядке возрастания? Можно ли считать, что результат сортируется в порядке возрастания? Каким будет ожидаемый результат для слияния '[1, 2, 3]' с '[4, 5, 6]'? –

+0

Источник может быть отсортирован в порядке или нет. Пример можно смутить. Результат для вашего примера может быть. 1, 4, 2, 5, 3, 6 – Ruben

ответ

0

Вы можете использовать + оператор для массивов, удалить дубликаты с помощью Set и сортировки результата:

let array1 = [10, 20, 30, 40, 50, 55] 
let array2 = [11, 22, 33] 

let mixedArray = Set(array1 + array2).sort(<) 
print(mixedArray) 
//[10, 11, 20, 22, 30, 33, 40, 50, 55] 

Это работает для любых размеров входного массива.

+0

Извините, но массивы не всегда могут быть в порядке – Ruben

Смежные вопросы