|
O'xshash ma'lumotlar turlarining o'zgaruvchilar ro'yxati
|
bet | 4/4 | Sana | 09.03.2023 | Hajmi | 32.59 Kb. | | #44750 |
Bog'liq Bir o\'lchamli massivlar brendni bosManzilni hisoblash
Bir o'lchovli massivni amalga oshirish
1D qatoridagi har qanday ma'lum bir elementning manzilini quyidagi tenglama bilan hisoblash mumkin,
A elementining manzili [k] = B + W * k
Bu erda B - massivning tayanch manzili, W - massivning har bir elementining kattaligi va massivda zarur bo'lgan elementlar soni k (ya'ni element ko'rsatkichi).
Misol
Masalan, biz bazaviy manzili 1000 ga teng bo'lgan 'a [10]' bir o'lchovli massivning 6-elementining manzilini topishni istaymiz.Ushbu misoldagi har bir elementning hajmi 4 bayt. Demak, shunga asoslanib hisoblash quyidagi usulda amalga oshirilishi mumkin.
A elementining manzili [6] = 1000 + 4 * 6
= 1000+24
= 1024
Ikki o'lchovli massivni amalga oshirish
Satrlar va ustunlar tushunchasi boshlanganligi sababli 2D massivdagi manzilni hisoblash 1D massivdan farq qiladi. Amalga oshirishning ikki turi mavjud -
Row-major - asosiy satrda elementlar qatorga mos ravishda o'qiladi.
Asosiy ustun - ustun ustunida ustunlar ustuni bo'yicha olib boriladi.
Qatorli dastur
Ma'lumki, ushbu dasturda qatorlar birin ketin ikkinchisiga qadar saqlanadi. Satr-major yordamida elementlarning manzilini 2 o'lchovli massivda hisoblash uchun ishlatiladigan formula:
A elementining manzili [i] [j] = B + W (n (i-L1) + (j-L2))
Bu erda B asosiy manzilni bildiradi va W har bir massiv elementining hajmini belgilaydi va n - ustunlar soni. L1 satrning pastki chegarasini, L2 ustunning pastki chegarasini belgilaydi.
Misol
Deylik, har bir element uchun 2 baytni saqlaydigan, [4… 8, -2 ... 3] deb belgilangan 100 ta asosiy manzilga ega [6,2] joyda joylashgan ikki o'lchovli massivning manzilini topishimiz kerak.
Birinchidan, pastki qatordan belgilangan qatorning yuqori chegarasi olib tashlanadigan n ustunlar sonini topishimiz kerak, ya'ni 3 - (- 2) va natijaga bittasi qo'shiladi (indeksatsiya 0 dan boshlanadi) , bu 6 ni beradi.
A [6] [2] = 100 + 2 (6 (6-4) + (2 - (- 2))) manzili
= 100+2(6×2+4)
= 100+32 = 132
Ustunli dastur
Katta ustunli dastur asosan qator ustunidan farq qiladi, chunki u saqlash ustunlarini ustunlar bilan bajarishi bilan ajralib turadi. Uning element manzilini hisoblash uchun formulasi satr-majorga o'xshaydi, faqat ustun spetsifikatsiyalari qator spetsifikatsiyalari bilan o'zgargan.
A elementining manzili [i] [j] = B + W (m (j-L2) + (i-L1))
Bu erda "m" qatorlar sonini ko'rsatadi.
|
| |