Ustuvor navbatlar
Ustuvor navbatlar (ing. Priority queue) – oddiy navbatlarga o’xshash ammo bir qator xususiyatlarga ega abstract konteyner:
Ustuvor navbatning har bir elementiga shu elementning ustuvorligini belgilovchi qandaydir qiymat mos qo’yilgan. Prioritet bir biri bilan solishtirish orqali kiritiladi;
Ustuvor navbatdan element yechib olish funksiyasi qaysi elementning prioriteti maksimal bo’lsa o’shani qaytaradi.
Ko’plab ilovalarda yozuvlarni ularning kalitlarini o’sish tartibi bo’yicha qayta ishlashni talab qiladi, lekin bu qat’iy tartibda va hammasini birdaniga qilish degani emas. Ko’pchilik hollarda yozuvlar biron to’plamda yig’iladi va keyin maksimal kalitli yozuv qayta ishlanadi, shundan so’ng yana yozuvlarni yig’ish yana davom ettirilishi, so’ngra joriy kalitdan kattaroq kalitga ega yozuv qayta ishlanishi mumkin va h.k. Bunday ma’lumotlar strukturasi ustuvor navbat (priority queue) deb yuritiladi. Ustuvor navbatlardan foydalanish oddiy navbatlardan (eng eski element o’chiriladi) va steklardan (eng yangi element o’chiriladi) foydalanish kabi, ammo ulardan unumli foydalanish murakkabroq.
Ustuvor navbatlarni piramidada qurish
Piramidaning muhim ustunligidan biri undagi qiymatlardan maksimali uning uchida joylashgan bo’ladi. Piramidaning qayta tiklash up() va down() amallari ko’chishlar sonini piramidaning uchidan oshmagan holda amalga oshiradi, bu esa ustuvor navbatlarni samarali qo’llashga imkon yaratadi.
Avvalo, bu qo’llash elementning tuzilmasini (chunki element faqatgina prioritetni emas balki qiymatni ham o’zida saqlaydi) tavsiflashni va piramidani hosil qiluvchi massivni e’lon qilishni talab qiladi. Piramidani qayta tiklash amallari priority maydonini solishtirishi lozim. Navbatning elementlari sonini saqlash uchun konstruktorda 0 qiymati bilan tashkil qilinadigan alohida size o’zgaruvchisi ajratiladi.
71. Binar uyum (kucha) - piramida (binary heap). Heap-Sort algoritmini realizatsiya qilish
Binar Heap - bu quyidagi xususiyatlarga ega bo'lgan ikkilik daraxt.
1) Bu to'liq daraxt (Barcha darajalar to'liq to'ldirilgan, ehtimol oxirgi darajadan tashqari va oxirgi darajadagi kalitlarga iloji boricha qolgan). Binary Heap-ning ushbu xususiyati ularni massivda saqlash uchun qulay qiladi.
2) Ikkilik uyum - bu Min Heap yoki Max Heap. Minary Binary Heap-da, ikkitomonlama Heap-dagi barcha kalitlar orasida eng past kalit bo'lishi kerak. Xuddi shu xususiyat ikkilik daraxtning barcha tugunlari uchun rekursiv ravishda haqiqiy bo'lishi kerak. Max Binary Heap MinHeap-ga o'xshash.
Do'stlaringiz bilan baham: |