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
}