Dinamik massivlarni yaratish asoslari
Dinamik massivlarni yaratish asoslari MUNDARIJA KIRISH .......................................................................................................................................................... 2 1.Dinamik massiv ......................................................................................................................................... 3 Dinamik massiv, shuningdek, o'lchamlarini o'zgartiradigan massiv sifatida ham tanilgan, bu ish vaqtida uning imkoniyatlarini moslashuvchan o'lchamlarini o'zgartirishga imkon beradigan ma'lumotlar tuzilishi. O'zgartirib bo'lmaydigan sobit o'lchamga ega bo'lgan statik massivlardan farqli o'laroq, dinamik massivlar kerak bo'lganda o'sishi yoki kichrayishi mumkin. ......................................................................... 3 Dasturlashda dinamik massivlar odatda saqlanadigan ma'lumotlarning aniq hajmi noma'lum bo'lganda yoki vaqt o'tishi bilan o'zgarishi mumkin bo'lganda ishlatiladi. Ushbu massivlar xotirani dinamik ravishda ajratadi va ko'proq elementlarni qo'shish yoki mavjud elementlarni olib tashlash kerak bo'lganda o'lchamlarini o'zgartirish mumkin. .............................................................................................................. 3 O'lchamini o'zgartirish jarayoni odatda yangi, kattaroq xotira blokini ajratishni, unga mavjud elementlarni nusxalashni va eski xotira blokini taqsimlashni o'z ichiga oladi. Bu dinamik massivga xotirani isrof qilmasdan ko'proq elementlarni joylashtirishga imkon beradi. Aksincha, agar elementlar olib tashlansa, xotirani tejash uchun massiv qisqarishi mumkin. ....................................................................... 3 Dinamik massivlar statik massivlarga o'xshash samarali tasodifiy kirishning afzalliklarini taklif qiladi, shu bilan birga dinamik o'lchamlarning moslashuvchanligini ta'minlaydi. Biroq, o'lchamlarni o'zgartirish operatsiyalari vaqt jihatidan nisbatan qimmatga tushishi mumkin, chunki xotirani qayta taqsimlash va nusxalash ishtirok etadi. .............................................................................................................................. 3 1.1. Dinamik massivlarni yaratish. ............................................................................................................... 5 1.2. Ko'p o'lchovli massivlar. ........................................................................................................................ 8 2. Ob'ektni dinamik massivga qo'shish va o’chirish ................................................................................... 15 2.1. Dinamik massivdan olib tashlash. ....................................................................................................... 16 2.2. Dinamik massiv uchun oddiy kod. ....................................................................................................... 18 3. Ma'lumotlar tuzilmalari ......................................................................................................................... 26 4. Dinamik massivlarning ishlashiga ta'sir qiluvchi omillar ......................................................................... 33 XULOSA ..................................................................................................................................................... 37 FOYDALANILGAN ADABIYOTLAR ................................................................................................................ 38 1
KIRISH Dinamik massivlar birinchi marta kompyuter dasturlashda ma'lumotlar tuzilishi tushunchasi sifatida kiritilgan. Ularning yaratilishining aniq tarixi har xil bo'lishi mumkin, ammo ularning rivojlanishini dasturlash tillari va xotirani boshqarish texnikasidagi yutuqlar bilan bog'lash mumkin. Dasturlashning dastlabki kunlarida odatda ma'lumotlarni saqlash va boshqarish uchun sobit o'lchamdagi massivlar ishlatilgan. Biroq, sobit o'lchamdagi massivlarning cheklanishi ishlab chiquvchilar turli xil ma'lumotlarni joylashtirish uchun zarur bo'lganda yoki dasturni bajarish paytida massivning hajmi dinamik ravishda o'zgarishi uchun zarur bo'lganda aniq bo'ldi. Ushbu muammoning echimi sifatida dinamik massivlar tushunchasi paydo bo'ldi. Belgilangan hajmdagi xotirani ajratish o'rniga, dinamik massivlar haqiqiy hajm talablari asosida ish vaqtida xotirani ajratish va qayta taqsimlashga imkon beradi. Massiv hajmini oshirish kerak bo'lganda, dinamik massiv kattaroq xotira blokini ajratadi va mavjud ma'lumotlarni yangi xotira maydoniga ko'chiradi. Xuddi shunday, massiv hajmini kamaytirish kerak bo'lganda, massiv kichikroq xotira blokini qayta taqsimlashi va shunga mos ravishda sozlashi mumkin. Dinamik massivlarni amalga oshirish va qo'llab- quvvatlash yillar davomida turli dasturlash tillariga birlashtirilgan. Masalan, C++ da dinamik massivlar odatda "yangi" kalit so'z yordamida yaratiladi va ko'rsatkichlar bilan boshqariladi. Python kabi boshqa tillar avtomatik ravishda xotirani ajratish va dinamik massivlar uchun qayta taqsimlashni ro'yxatlar kabi 2
o'zlarining mahalliy ma'lumotlar tuzilmalari orqali boshqaradi. Umuman olganda, dinamik massivlarning yaratilishi va evolyutsiyasi dasturlash tillarida moslashuvchan ma'lumotlar tuzilmalariga bo'lgan ehtiyoj bilan bog'liq bo'lib, ishlab chiquvchilarga dasturni bajarish paytida turli xil ma'lumotlarni samarali boshqarish va boshqarish imkoniyatini beradi. 1.Dinamik massiv Dinamik massiv, shuningdek, o'lchamlarini o'zgartiradigan massiv sifatida ham tanilgan, bu ish vaqtida uning imkoniyatlarini moslashuvchan o'lchamlarini o'zgartirishga imkon beradigan ma'lumotlar tuzilishi. O'zgartirib bo'lmaydigan sobit o'lchamga ega bo'lgan statik massivlardan farqli o'laroq, dinamik massivlar kerak bo'lganda o'sishi yoki kichrayishi mumkin. Dasturlashda dinamik massivlar odatda saqlanadigan ma'lumotlarning aniq hajmi noma'lum bo'lganda yoki vaqt o'tishi bilan o'zgarishi mumkin bo'lganda ishlatiladi. Ushbu massivlar xotirani dinamik ravishda ajratadi va ko'proq elementlarni qo'shish yoki mavjud elementlarni olib tashlash kerak bo'lganda o'lchamlarini o'zgartirish mumkin. O'lchamini o'zgartirish jarayoni odatda yangi, kattaroq xotira blokini ajratishni, unga mavjud elementlarni nusxalashni va eski xotira blokini taqsimlashni o'z ichiga oladi. Bu dinamik massivga xotirani isrof qilmasdan ko'proq elementlarni joylashtirishga imkon beradi. Aksincha, agar elementlar olib tashlansa, xotirani tejash uchun massiv qisqarishi mumkin. Dinamik massivlar statik massivlarga o'xshash samarali tasodifiy kirishning afzalliklarini taklif qiladi, shu bilan birga dinamik o'lchamlarning moslashuvchanligini ta'minlaydi. Biroq, o'lchamlarni o'zgartirish operatsiyalari vaqt jihatidan nisbatan qimmatga tushishi mumkin, chunki xotirani qayta taqsimlash va nusxalash ishtirok etadi. 3
Dinamik massivlar dasturlash tillarida massiv hajmini kompilyatsiya vaqtida emas, balki ish vaqtida aniqlash kerak bo'lgan vaziyatlarni boshqarish uchun ishlatiladi. Dinamik massivlar uchun bir nechta umumiy foydalanish holatlari: 1. Dinamik xotirani taqsimlash: dinamik massivlar ish vaqtida massiv uchun xotirani ajratishga imkon beradi, bu massiv hajmi oldindan ma'lum bo'lmaganda yoki dasturni bajarish paytida o'zgarishi mumkin bo'lganda foydali bo'lishi mumkin. Bu odatda C/C++ da `malloc()` yoki C++ yoki Java kabi tillarda `new` operatori kabi funktsiyalar yordamida amalga oshiriladi. 2. Moslashuvchan ma'lumotlar tuzilmalari: dinamik massivlar ko'pincha ro'yxatlar, stacklar, navbatlar va vektorlar kabi dinamik ma'lumotlar tuzilmalarini amalga oshirish uchun ishlatiladi. Dinamik massivlar yordamida siz kerak bo'lganda elementlarni osongina qo'shishingiz yoki olib tashlashingiz mumkin, bu esa ma'lumotlarni samarali o'lchamlarini va manipulyatsiyasini ta'minlaydi. 3. Katta ma'lumotlar bilan ishlash: agar sizda dastlab xotiraga sig'maydigan juda katta ma'lumotlar to'plamlari bo'lsa, dinamik massivlar ma'lumotlarning bir qismini dinamik ravishda yuklash va boshqarish uchun ishlatilishi mumkin. Bu katta ma'lumotlar to'plamlarini samarali qayta ishlash va manipulyatsiya qilish imkonini beradi, chunki siz bir vaqtning o'zida ma'lumotlarning qismlarini yuklashingiz va qayta ishlashingiz mumkin. 4. Resizable konteynerlarini amalga oshirish: dinamik massivlar odatda Java-dagi ArrayList yoki C++ - dagi vektor kabi o'lchamli konteynerlar uchun asosiy ma'lumotlar tuzilishi sifatida ishlatiladi. Ushbu konteynerlar elementlar qo'shilishi yoki olib tashlanishi bilan massivning hajmini dinamik ravishda o'zgartirish imkoniyatini beradi, bu ularni ma'lumotlar to'plamlarini boshqarish uchun foydali qiladi. Umuman olganda, dinamik massivlar dasturni bajarish paytida massiv hajmi dinamik ravishda o'zgarishi kerak bo'lgan stsenariylarda moslashuvchanlikni ta'minlaydi. 4
1.1. Dinamik massivlarni yaratish. C++ tilidagi individual dinamik ob'ektlardan tashqari biz dinamik massivlardan ham foydalanishimiz mumkin. Dinamik massivda xotirani ajratish uchun new operatori ham ishlatiladi , shundan so'ng kvadrat qavs ichida massivda nechta ob'ekt bo'lishi ko'rsatiladi: int *numbers {new int[4]}; // 4 ta elementdan iborat massiv // yoki // int *numbers = new int[4]; Bundan tashqari, bu holda, yangi operator int tipidagi ob'ektga ko'rsatgichni qaytaradi - yaratilgan massivning birinchi elementi. Bunday holda, to'rtta int elementli massiv aniqlanadi, lekin ularning har biri aniqlanmagan qiymatga ega. Biroq, biz qiymatlar bilan massivni ishga tushirishimiz ham mumkin: int *numbers1 {new int[4]{}}; // massiv elementlari 0, 0, 0, 0 int *numbers2 {new int[4]{ 1, 2, 3, 4 }}; // massiv elementlari 1, 2, 3, 4 int *numbers3 {new int[4]{ 1, 2 }}; // massiv elementlari 1, 2, 0, 0 // o'xshash massiv ta'riflari // int *numbers1 = new int[4]{}; // massiv elementlari 0, 0, 0, 0 // int *numbers1 = new int[4](); // massiv elementlari 0, 0, 0, 0 // int *numbers2 = new int[4]{ 1, 2, 3, 4 }; // massiv elementlari 1, 2, 3, 4 // int *numbers3 = new int[4]{ 1, 2 }; // massiv elementlari 1, 2, 0, 0 Muayyan qiymatlar bilan massivni ishga tushirishda shuni yodda tutingki, agar figurali qavslarda massiv uzunligidan ko'proq qiymatlar bo'lsa, yangi operator ishlamay qoladi va massivni yarata olmaydi. Agar aksincha, kamroq qiymatlar 5