Junior — Middle
Əlavə yaddaş istifadə edərək iki sıralanmış massivləri necə birləşdirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
İki sıralanmış massivləri əlavə yaddaş istifadə edərək yeni sıralanmış massivə birləşdirmək üçün, merge (birleştirme) algoritmindən istifadə etmək mümkündür, bu da merge sort-un bir addımına bənzəyir.
Fikir:
- Hər iki orijinal massivlərin cəm ölçüsünə bərabər olan yeni bir massiv yaradın.
- Hər biri üçün iki göstərici istifadə edin.
- Hər iki massivdəki cari elementləri müqayisə edin, kiçik olanı yeni massivə əlavə edin və müvafiq göstəricini hərəkət etdirin.
- Bir massiv bitdikdə, digər massivdə qalan elementləri əlavə edin.
Kotlin (Android) nümunəsi:
fun mergeSortedArrays(arr1: IntArray, arr2: IntArray): IntArray {
val result = IntArray(arr1.size + arr2.size)
var i = 0
var j = 0
var k = 0
while (i < arr1.size && j < arr2.size) {
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++]
} else {
result[k++] = arr2[j++]
}
}
while (i < arr1.size) {
result[k++] = arr1[i++]
}
while (j < arr2.size) {
result[k++] = arr2[j++]
}
return result
}
Bu algoritm, massivlərin ölçülərinə bağlı olaraq, O(n + m) vaxtda işləyir və yeni massiv üçün əlavə yaddaş istifadə edir.