Sobes.tech
Junior — Middle

Чӣ гуна метавон ду пайдарпайи ба тартиб даровардашударо тавре муттаҳид кард, ки натиҷа дар тартиб боқӣ монад?

sobes.tech AI

Ҷавоб аз AI

Ду таснифланган тизмаларни бирлаштириш учун, уларни бирлаштириш (merge) алгоритмидан фойдаланиш мумкин, у линей вақтда ишлайди.

Гоя:

  • Икки таснифланган массив ёки рўйхат мавжуд.
  • Ҳар бири учун икки кўрсатгичдан фойдаланамиз.
  • Ҳозирги элементларни солиштирамиз, кичик бўлгани натижага қўшилади ва тегишли кўрсатгич ҳаракатлантирилади.
  • Ҳаммаси ўтганча такрорлаймиз.

Котлинда мисол:

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
}