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
}