Maxanov Asliddin KIS-18-22
3 – amaliy ish mavzu: Funksiya. Rekkursiv funksiyalar. Funksiyalarni qayta yuklash mexanizmi. Fayllar bilan ishlash asoslari. Ko’rsatgichlar va ular bilan ish yuritish. Dinamik xotira tushunchasi. Dinamik massivlar
3 – AMALIY ISH
Mavzu: Funksiya. Rekkursiv funksiyalar. Funksiyalarni qayta yuklash mexanizmi. Fayllar bilan ishlash asoslari. Ko’rsatgichlar va ular bilan ish yuritish. Dinamik xotira tushunchasi. Dinamik massivlar 18)
a=1,011; b=2,011; c=3,011.
18).Sonni tublikka tekshiruvchi funksiya tuzing va barcha uch xonali tub sonlarni chiqaring.
Massivlar. Statik va dinamik massivlar. Massivlar bilan ishlash
Massivlar. Statik va dinamik massivlar. Massivlar bilan ishlash
Dinamik massiv ( C++ da vektor , Java da ArrayList) qo'shishga harakat qilganimizda avtomatik ravishda o'sib boradi va yangi element uchun boshqa joy qolmaydi. Odatda maydon ikki baravar ko'payadi. Oddiy dinamik massivni, odatda, darhol talab qilinadigan elementlar sonidan kattaroq, qat'iy o'lchamdagi massivni ajratish orqali qurish mumkin. Dinamik massivning elementlari asosiy massivning boshida yonma-yon saqlanadi va asosiy massivning oxirigacha qolgan pozitsiyalar saqlangan yoki foydalanilmaydi. Elementlarni dinamik massivning oxiriga doimiy vaqtda, bu bo'sh joy to'liq qo’llanilmaguncha, ajratilgan bo'sh joydan foydalanib qo'shish mumkin. Barcha bo'sh joy ishlatilganda va qo'shimcha element qo'shilishi kerak bo'lganda, asosiy o'lchamli massiv hajmini oshirish kerak.Dinamik massiv ( C++ da vektor , Java da ArrayList) qo'shishga harakat qilganimizda avtomatik ravishda o'sib boradi va yangi element uchun boshqa joy qolmaydi. Odatda maydon ikki baravar ko'payadi. Oddiy dinamik massivni, odatda, darhol talab qilinadigan elementlar sonidan kattaroq, qat'iy o'lchamdagi massivni ajratish orqali qurish mumkin. Dinamik massivning elementlari asosiy massivning boshida yonma-yon saqlanadi va asosiy massivning oxirigacha qolgan pozitsiyalar saqlangan yoki foydalanilmaydi. Elementlarni dinamik massivning oxiriga doimiy vaqtda, bu bo'sh joy to'liq qo’llanilmaguncha, ajratilgan bo'sh joydan foydalanib qo'shish mumkin. Barcha bo'sh joy ishlatilganda va qo'shimcha element qo'shilishi kerak bo'lganda, asosiy o'lchamli massiv hajmini oshirish kerak.Agar 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.Agar 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.Dinamik massivning asosiy xususiyatlariElementni 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.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.Statik massiv va dinamik massiv o'rtasidagi farqStatik massiv va dinamik massiv o'rtasidagi farq
Static massiv
Dynamic massiv
Statik massivlarga kompilyatsiya vaqtida xotira ajratiladi
Dinamik massiv ish vaqtida joylashgan xotira ajratiladi.
Statik massivning o'lchami belgilangan.
Dinamik massivning o'lchami belgilangan.
U stek xotira maydonida joylashgan.
U yig‘ilgan xotira maydonida joylashgan.
int massivi[10]; // 10 o'lchamli massiv
int* array = new int[10];
Ma'lumotlarning dinamik tuzilishi
Dinamik ma'lumotlar strukturasida strukturaning o'lchami qat'iy emas va ular ustida bajarilgan operatsiyalar davomida o'zgartirilishi mumkin. Dinamik ma'lumotlar tuzilmalari ish vaqtida ma'lumotlar tuzilmalarini o'zgartirishni osonlashtirish uchun mo'ljallangan.Raqobatli dasturlashda dinamik ma'lumotlar tuzilmasidan foydalanish.Raqobatli dasturlashda dinamik ma'lumotlar tuzilmasidan foydalanish.Raqobatchi dasturlashda xotira chegarasidagi cheklovlar unchalik katta emas va biz xotira chegarasidan oshib keta olmaymiz. Cheklovlarning yuqori qiymatini hisobga olgan holda, biz bunday o'lchamdagi statik ma'lumotlar strukturasini ajrata olmaymiz, shuning uchun Dinamik ma'lumotlar tuzilmalari foydali bo'lishi mumkin.Dinamik ma'lumotlar strukturasining afzalligi:Dinamik ma'lumotlar strukturasining afzalligi:Xotirani ajratish dasturni bajarish jarayonida amalga oshiriladi.Yuqori darajada ishlatiladi.Samarali.Xotirani qayta ishlatish.Ko’payib ketish sodir bo'ladi.Ma'lumotlar turi hajmi aniqlanmaydi
//declaring array
int array[];
//initialize an array
array= new int[6];
//adding elements to the array
array[0] = 34;
array[1] = 90;
array[2] = 12;
array[3] = 22;
array[4] = 9;
array[5] = 27;
System.out.print("Elements of Array are: ");
//iteraton over the array
for(int i=0; i
System.out.print(array[i] +" ");
}
http://fayllar.org
|