Назад к вопросам
Junior — Middle
67
Каким образом можно объединить две отсортированные последовательности так, чтобы результат оставался отсортированным?
Ответ от нейросети
sobes.tech AI
Чтобы объединить две отсортированные последовательности в одну отсортированную, можно использовать алгоритм слияния (merge), который работает за линейное время.
Идея:
- Имеются два отсортированных массива или списка.
- Используем два указателя, по одному на каждый массив.
- Сравниваем текущие элементы, меньший добавляем в результат и сдвигаем соответствующий указатель.
- Повторяем, пока не пройдем оба массива.
Пример на Kotlin:
fun mergeSortedLists(a: List<Int>, b: List<Int>): List<Int> {
val result = mutableListOf<Int>()
var i = 0
var j = 0
while (i < a.size && j < b.size) {
if (a[i] <= b[j]) {
result.add(a[i])
i++
} else {
result.add(b[j])
j++
}
}
// Добавляем оставшиеся элементы
while (i < a.size) result.add(a[i++])
while (j < b.size) result.add(b[j++])
return result
}