Binary search tree ustida amallar. API yozish
BSTga element qo’shish, o’chirish, qidirish, maksimum/minimum elementni chiqarish uchun API yozamiz. APIning tuzilishi quyidagicha bo’ladi.
Dasturchi, frilanser, gik va introvert
Giant tech korporatsiyalardan biriga ishga kirish uchun tayyorgarlik jarayonida o’rganganlarim – algoritmlar, ma’lumot tuzilmalari haqida maqolalar
BSTga element qo’shish, o’chirish, qidirish, maksimum/minimum elementni chiqarish uchun API yozamiz. APIning tuzilishi quyidagicha bo’ladi.
Binary search tree (BST) – chap child’ining qiymati o’zidan kichik bo’lgan, o’ng child’ining qiymati o’zidan katta bo’lgan node’lardan iborat binary tree.
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.
Tree – chiziqli bo’lmagan ma’lumot tuzilmasi (data structure) bo’lib u ma’lumotlarni ierarxik ko’rinishda tashkil qiladi. Masalan, oila shajarasini tasavvur qiladigan bo’lsak, u ham tree ma’lumot tuzilmasi hisoblanadi.
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).