|
Dinamik massiv
|
bet | 2/4 | Sana | 11.01.2024 | Hajmi | 8,04 Kb. | | #134587 |
Bog'liq Massivlar. Statik va dinamik massivlar. Massivlar bilan ishlash-fayllar.orgAgar biz massivga elementni kiritsak, lekin massiv to‘la bo‘lsa, funksiya yaratish zarur, bu funksiya yangi ikki o‘lchamli massiv hosil qiladi yoki siz xohlagancha oldingi massivdagi barcha elementni yangi massivga ko‘chiradi va shu yangi massivni qaytaradi. Bundan tashqari, biz massiv hajmini kamaytirishimiz mumkin. Berilgan pozitsiyaga element qo’shish, elementni index bo'yicha oxirgi va pozitsiyada ham olib tashlash mumkin. Elementni qo'shish: Agar massiv o'lchami yetarli bo'lmasa, oxiriga element qo’shiladi, keyin massiv hajmini kengaytiriladi va asl massivning oxiriga elementni, shuningdek berilgan indeksni qo’shadi. Barcha nusxa ko'chirish O(n) vaqtini oladi, bu yerda n - massivimizdagi elementlar soni. Bu qo'shimcha uchun ahamiyatli hisoblanadi. Ruxsat etilgan uzunlikdagi massivda qo'shimchalar faqat O (1) vaqtni oladi. Ammo qo'shimchalar faqat to'liq massivga kiritganimizda O(n) vaqtini oladi va bu juda kam uchraydi, ayniqsa har safar bo'sh joy tugashi bilan massiv hajmini ikki baravar oshirsak. Shunday qilib, ko'p hollarda qo'shish hali ham O (1) vaqt, ba'zan esa O (n) vaqti. Dinamik massivda siz qat'iy o'lchamli massiv yaratishingiz mumkin, agar kerak bo'lsa, massivga yana bir nechta element qo'shiladi va keyin quyidagi yondashuvdan foydalaning: O'chirish: Elementni massivdan o'chirish, standart remove() usuli elementni oxiridan o'chirish, shunchaki oxirgi indeksda nolni saqlash va i indeks bo'lgan removeAt(i) usulini chaqirish orqali ma'lum bir indeksdagi elementni ham o'chiring. removeAt(i) usuli chap tomondagi barcha o'ng elementni berilgan indeksdan siljitadi. O'chirish: Elementni massivdan o'chirish, standart remove() usuli elementni oxiridan o'chirish, shunchaki oxirgi indeksda nolni saqlash va i indeks bo'lgan removeAt(i) usulini chaqirish orqali ma'lum bir indeksdagi elementni ham o'chiring. removeAt(i) usuli chap tomondagi barcha o'ng elementni berilgan indeksdan siljitadi. O‘lchamini o‘zgartirish: Agar massivning o‘ng tomonida nol/nol ma’lumotlar (siz qo‘shgan elementdan tashqari) bo‘lsa, ya’ni uning foydalanilmagan xotirasi bo‘lsa, shrinkSize() usuli qo‘shimcha xotirani bo‘shatishi mumkin. Qachonki, barcha bo'sh joy iste'mol qilinsa va qo'shimcha element qo'shilishi kerak bo'lsa, asosiy o'lchamli massiv hajmini oshirishi kerak. Odatda o'lchamini o'zgartirish qimmatga tushadi, chunki biz nihoyat elementimizni qo'shishimizdan oldin kattaroq massiv ajratgan bo’lamiz.
|
| |