Dictionary (yoki Symbol table)
Dictionary (yoki Symbol table) – obyektlar guruhini o’zida jamlagan ma’lumot tuzilmasi. Unda o’zaro bog’langan kalit (key) va qiymat (value) guruhi saqlanadi. Dictionary’dan ma’lumotni key’ni ko’rsatgan holda olinadi.
Dasturchi, frilanser, gik va introvert
Dictionary (yoki Symbol table) – obyektlar guruhini o’zida jamlagan ma’lumot tuzilmasi. Unda o’zaro bog’langan kalit (key) va qiymat (value) guruhi saqlanadi. Dictionary’dan ma’lumotni key’ni ko’rsatgan holda olinadi.
Heapsort – binary heap ma’lumotlar tuzilmasi asosidagi tartiblash algoritmi. Biz heap har doim ma’lum bir tartibga rioya qilishini bilganimiz uchun, uning bu hususiyatidan tartiblashda foydalanishimiz – array’ning eng katta qiymatini olib uni array’ning ohiriga qo’yib borish orqali array’ni tartiblashimiz mumkin.
Binary heap – har bir tuguni (node) maxsus tartiblangan va complete binary tree. Complete binary tree nima ekanligi haqida bu yerda tushuntirib o’tilgani uchun, maxsus tartiblangan ma’nosiga to’xtalamiz.
Priority queue (PQ) – huddi stack va queue kabi ma’lumotlar to’plami. Yagona farqi – qaysi element o’chirilishida. Stack’da ohirgi qo’shilgan element birinchi bo’lib o’chirilsa, queue’da birinchi qo’shilgan element birinchi o’chiriladi.
Ok, bunisi oson, Quickselect ni o’rganish nimaga kerak deyishingiz mumkin. To’g’ri, shunchaki array’ni o’sish bo’yicha tartiblab, keyin array[k] ni topsa bo’ladi. Quicksort yoki Mergesort yordamida array tartiblangach, k-nchi kichik element topiladi.
Quicksort bilan tanishib chiqqan bo’lsangiz, algoritmda bo’luvchi element (pivot) array’ni ikkiga bo’ladi. Bunda array[pivot]’ning chap tarafida undan kichkina qiymatlar, o’ng tarafida undan katta qiymatlar o’rin oladi. Ushbu algoritmning kamchiligi shundaki – ro’yhatda bir xil qiymatlar ko’p uchraydigan bo’lsa, ishlash vaqti orta boshlaydi.
Mergesort kabi, Quicksort ham rekursiv algoritm, lekin Quicksort’ning Mergesort’dan farqi – rekursiya ish tugallangach ishga tushadi (Mergesort’da avval rekursiya, keyin ish boshlanardi).
Agar siz men kabi PHP tarafdan kelgan bo’lsangiz, array’ni shuffle() funksiyasi bilan aralashtirib, uning effektivligi yoki qanday ishlashi haqida bosh qotirib o’tirmagan bo’lsangiz kerak.
Mergesort tartiblash jarayonida ro’yhatni (array’ni) ikkiga bo’ladi, ikki tarafini yana ikkiga bo’ladi, ikki tarafini yana ikkiga bo’ladi, … ikki tarafda bittadan son qolguncha bo’lishda davom etadi. Keyin ularni tartiblashni boshlaydi.
Divide and Conquer (bundan keyin D&C) texnikasi juda ko’p algoritmlar ishlatadigan dizayn patterni bo’lib, uning asosida bitta katta masalani kichik-kichik osonroq masalalarga bo’lish va ularni alohida-alohida yechishni ko’zda tutadi.