Junior — Middle
İki sıralanmış diziyi nasıl birleştirebilirsiniz ki, sonuç sıralı kalmaya devam etsin?
sobes.tech yapay zeka
AI'dan gelen yanıt
İki sıralanmış diziyi tek sıralanmış dizi haline getirmek için, lineer zamanda çalışan birleştirme (merge) algoritması kullanılabilir.
Fikir:
- İki sıralanmış dizi veya liste vardır.
- Her biri için birer gösterici kullanılır.
- Mevcut öğeleri karşılaştırırız, daha küçüğü sonucu ekler ve ilgili göstericiyi kaydırırız.
- Her iki diziyi de geçene kadar tekrarlayız.
Kotlin örneği:
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++
}
}
// Kalan öğeleri ekle
while (i < a.size) result.add(a[i++])
while (j < b.size) result.add(b[j++])
return result
}