Sobes.tech
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
}