Sobes.tech
Junior — Middle

İki sıralanmış ardıcıllığı necə birləşdirmək olar ki, nəticə sıralı qalsın?

sobes.tech Süni İntellekt

AI-dan cavab

İki sıralanmış ardıcıllığı bir sıralanmış ardıcıllığa birləşdirmək üçün, birləşmə (merge) algoritmindən istifadə etmək olar, bu, xətt vaxtında işləyir.

İdeya:

  • İki sıralanmış massiv və ya siyahı mövcuddur.
  • Hər biri üçün iki göstərici istifadə edirik.
  • Mövcud elementləri müqayisə edirik, kiçik olan nəticəyə əlavə olunur və müvafiq göstərici irəli çəkilir.
  • Hər iki massiv keçilənə qədər təkrarlayırıq.

Kotlin nümunəsi:

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++
        }
    }
    // Qalan elementləri əlavə et
    while (i < a.size) result.add(a[i++])
    while (j < b.size) result.add(b[j++])
    return result
}