Bucket-Sort
Download 19.31 Kb.
|
Bucket.
Bucket-Sort Bu saraladigan barcha elementlarni cheklangan sonli katakchalar orasida taqsimlovchi tartiblash algoritmi. Har bir quti faqat ma`lim shartlarga javob beradigan narsalarni o`z ichiga olishi mumkin. Yacheykalar bo`yicha saralash sifatida yaxshi tanilgan. Shuni ham aytish mumkinki BUCKET sort pochtachi algoritmi deb nomlanuvchi variantlarga ega. Bu saralanadigan elementlarda bir nechta kalitlar va/yoki pastki kalitlar mavjud bo`lganda foydalaniladigan bucketsort variantidir. Ushbu algoritmning nomi pochta bo`limlari misolidan kelib chiqadi; u yerda xat belgilangan manzilga yetib borishi uchun tasniflanishi kerak bo`lsa, u avval borar mamlakatga, keyin Shahar yoki viloyatga, so`ngra manzil ko`chasi yoki mahallasiga va hokazolarga ko`ra tasniflanadi. Ya`ni, bu algoritm ketma-ket buyurtma berish uchun bir nechta kalitlardan foydalanadi. Bucket sort (yoki bin sort) algoritmi, o'lchamli ma'lumotlar (integer yoki float sonlar) uchun ishlatiladigan tartiblash algoritmidir. Algoritm o'lchamli ma'lumotlarni tartiblash uchun o'lchamlik bo'yicha tartiblash algoritmlaridan foydalanadi. Bucket sort algoritmi quyidagi tartibda ishlaydi: Kiruvchi o'lchamli ma'lumotlarni o'qib olamiz. Ma'lumotlarni boshqa bir massivga tayyorlaymiz (boshlang'ich holatda bu massiv bo'sh). Har bir o'lchamli ma'lumotni mos hajmdagi bucket (sirpancha)ga joylashtirib, shu sirpanchani mos tartibda saralaymiz. Har bir bucketdagi ma'lumotlarni o'qib olamiz va ularni o'lchamli ma'lumotlar ketma-ketligiga qo'shib qo'yamiz (sorting deb ataladigan funksiyaga junatamiz). Yuqorida ko'rsatilgan tartibda, saralgan bucketdagi ma'lumotlarni bir qatorga qo'shib ketamiz. Agar butun o'lchamli ma'lumotlar bitirilgan bo'lsa, sorting tugagan deb hisoblaymiz. Aks holda, yuqoridagi 3-qadamdan boshqa natijalarni olish uchun qaytadan qayta ishlaymiz. Bucket sort algoritmi, eng yaxshi natijalarni olish uchun biron-biriga juda yaqin o'lchamli ma'lumotlarni bir-biriga qo'shish uchun idealdir. Ammo, ma'lumotlar qattiq bir tarzda tashkil etilgan holda (masalan, hamma ma'lumotlar bir bucketga to'plangan bo'lsa), algoritm o'lchamli ma'lumotlar uchun yaxshi natijalar qaytaradi. Algoritmda o'lchamli ma'lumotlar soni katta bo'lganda yoki ma'lumotlar o'lchamlari katta farq qiladigan holatlar uchun, algoritm efektivligi kamayadi. Bucket sort algoritmi, o'lchamli ma'lumotlarni tartiblashda katta ma'lumotlar soni uchun katta samarali bo'ladi. Ammo, o'lchamli ma'lumotlar soni kichik bo'lsa yoki ma'lumotlar o'lchamlari orasidagi farq kam bo'lsa, Bucket sort algoritmi o'lchamli ma'lumotlarni tartiblashda to'g'ri ishlamaydi. Algoritmda yaratingan bucketlar soni o'lchamli ma'lumotlarga nisbatan juda katta bo'lishi mumkin. Shuningdek, o'lchamli ma'lumotlarning o'zaro farqi juda katta bo'lsa, bir qancha to'g'ri natijalar olishning imkoni kam bo'ladi. Bunday holatlar uchun, boshqa tartiblash algoritmlari, masalan, quicksort, mergesort yoki heapsortdan foydalanish tavsiya etiladi. Bucket sort algoritmi o'lchamli ma'lumotlarni saralashda yaxshi natijalarni qaytaradi, ammo bu algoritmning ishga tushirilishiga bog'liq qo'shimcha xavfsizlik chegaralari mavjud. Misol uchun, bucketlar to'plamida katta sonlar joylashishi mumkin, shuningdek, bu kengaytirishlar xotiraga yo'naltirilishi uchun kerak bo'ladi. Bundan tashqari, saralgan ma'lumotlar bucketga joylashtirilganda, har bir bucket o'lchamli ma'lumotlarni saralash uchun qo'llanadigan yordamchi tartiblash algoritmi yoki funksiyalar yordamida saralanishi kerak bo'ladi. Shu sababli, bucket sort algoritmi ishga tushirilganda, o'lchamli ma'lumotlarning qaysi tartiblash algoritmi yordamida saralinishi kerakligi haqida qaror qabul qilish shart. Bundan tashqari, bucket sort algoritmi haqida batafsilroq tushuntirish uchun, algoritmni qo'llashning tegishli amaliy misollariga qarang. Bu yordamda siz algoritmdan to'liq foydalanishning va xatolarni tuzatishning yaxshi usullarini topishingiz mumkin. ucket sort algoritmi ishlatilishi bilan bog'liq boshqa bir qo'shimcha xavfsizlik chegarasi, o'lchamli ma'lumotlarning chegaralarida jihatdan farqli bo'lishi mumkin. Chunki bucket sort algoritmi o'lchamli ma'lumotlarning o'zaro farqini yo'q qiladi, shuningdek, o'lchamli ma'lumotlar o'rta qiymatga yaqin bo'lsa, o'lchamli ma'lumotlar butun qismlarga bir xil tarzda tarqatiladi. Bunday holatda, o'lchamli ma'lumotlarning bir nechta o'rta qiymatli bo'lishi mumkin, ammo bu qiymatlar bir xil bucketga yoziladi. Shunday qilib, o'rta qiymatli ma'lumotlarning tartiblashi yoki o'rta qiymatli ma'lumotlar o'rtasidagi farqlar yorqin emas. Agar sizning maqsadingiz o'lchamli ma'lumotlarni tartiblash bo'lsa, ushbu xavfsizlik chegarasini ehtimol ko'proq bo'lishi mumkin. Bu sababli, bucket sort algoritmini ishlatish oldindan, o'lchamli ma'lumotlarning tartiblashda qaysi tartiblash algoritmi yordamida ishlatilishi kerakligi haqida chindan chindan o'ylab ko'ring. Agar o'lchamli ma'lumotlar yirik farq qilmasa yoki o'lchamli ma'lumotlar soni katta bo'lmasa, bucket sort algoritmi yaxshi natijalar qaytarishi mumkin. Aslida, bu algoritmning ishlashi to'g'ri natijalar qaytarishga qodir. Agar o'lchamli ma'lumotlarning o'zaro farqi katta bo'lmasa, bu algoritmning saralash natijalari, o'lchamli ma'lumotlar soni uchun bir nechta saralash amallaridan ko'proq yaxshi bo'ladi. Bunday qilib, bucket sort algoritmi katta sonli o'lchamli ma'lumotlar saralashda juda yaxshi ish bajaradi. Xulosa qilish kerakki, Bucket sort algoritmi o'lchamli ma'lumotlarni tartiblashda juda samarali bo'lib, boshqa tartiblash algoritmlari bilan solishtirilganda ishlarida yaxshi natijalar qaytarishi mumkin. Ammo o'lchamli ma'lumotlarning tartiblashida qaysi tartiblash algoritmi yordamida ishlatilishi kerakligi haqida xabar qilish shart. Agar o'lchamli ma'lumotlar o'zaro farq qilmaydi yoki o'lchamli ma'lumotlar soni katta bo'lmasa, Bucket sort algoritmi yaxshi natijalar qaytarishi Bucket sort algoritmi shu bilan birga, o'lchamli ma'lumotlar bir nechta bucketga taqsimlanadi. Bu xususiyat algoritmda yirik ma'lumotlar sonini tashkil etadi, ya'ni ma'lumotlar kesimida bir nechta o'lchamli ma'lumotlar bo'lishi mumkin. Bucket sort algoritmi quyidagi qadamdan iboratdir: Barcha o'lchamli ma'lumotlarning max va min qiymatlarini aniqlang. Barcha o'lchamli ma'lumotlarni taqsimlash uchun buyruq to'plamini yaratib, bu buyruq to'plamida har bir bucket uchun bo'sh joy reservatsiyasi qilinadi. Barcha o'lchamli ma'lumotlarni mos bucketlarga yozing. Bu jarayon barcha o'lchamli ma'lumotlarni mos bucketga joylashish bilan boshlanadi. Bu qadamda, o'lchamli ma'lumotlar max va min qiymatlari orasida joylashgan mos bucketni aniqlash uchun ishlatiladi. Har bir bucketdagi o'lchamli ma'lumotlarni tartiblash. Bu qadamda har bir bucketdagi o'lchamli ma'lumotlar o'zaroq saralash algoritmi yordamida saralash uchun joyni almashadi. Barcha tartiblangan ma'lumotlarni yagona massivga birlashtiring. Bu qadamda, o'lchamli ma'lumotlar hammasi tartiblangan holda, yagona massivga yig'iladi. Bucket sort algoritmi ko'p sonli o'lchamli ma'lumotlarning saralanishiga qo'shimcha xavfsizlik chegaralarini taqdim etadi, chunki u o'lchamli ma'lumotlarni taqsimlash uchun mos bucketlar yaratadi va o'lchamli ma'lumotlar mos bucketga yoziladi. Shunday qilib, bu algoritm o'lchamli ma'lumotlarni saralashda oldindan tayyorlangan tartiblash ma'lumotlari ishlatilgan holda, juda tez va samarali ish bajaradi. Bu bilan birga, bucket sort algoritmi kichik ma'lumotlar uchun juda yaxshi natijalar qaytaradi, chunki bu ma'lumotlar xavfsizligi garantilangan holda o'lchamli ma'lumotlar jadvalini taqsimlash uchun mos bucketlar yaratadi. Bunday qilib, agar o'lchamli ma'lumotlar soni kichik bo'lsa, bu algoritm qiyin ish bajaradigan tartiblash algoritmlari bilan solishtirilganda ham yaxshi ish bajaradi. Lekin, bucket sort algoritmi hammasi o'lchamli ma'lumotlarni saralash uchun mos bucketlar yaratadi. Bu yuzdan, agar ma'lumotlar soni katta bo'lsa va o'lchamli ma'lumotlar yig'ilishi qiyin bo'lsa, bu algoritm xotira va qurilmalarning kengligini to'ldirishi mumkin. Shuning uchun, o'lchamli ma'lumotlar soni katta bo'lgan holatlar uchun bu algoritmdan foydalanish tavsiya etilmaydi. Bundan tashqari, bucket sort algoritmi tavsif qilingan natijalar uchun hamida bizning o'zgaruvchilarimizga bog'liq bo'ladi. Bizning o'lchamli ma'lumotlarimiz va bucketlar soni kattaligi bilan algoritmdan foydalanish samaradorligi o'zgaradi. Bunday qilib, bu algoritmning qaysi holatlarda ishlatilishi kerakligini tushuntirish uchun bizning maqsadimizga qarab, ma'lumotlarimizning turini va sonini ko'rsatuvchi joyli ishlatilishi kerak. Bucket sort algoritmi, o'lchamli ma'lumotlarni saralash uchun oddiy, ammo samarali bir usuldir. Bu algoritmning vaqt kompleksligi, o'lchamli ma'lumotlar soniga bog'liq bo'lib, har bir ma'lumotni taqsimlash uchun mos bucket yaratish uchun O(n+k) vaqt talab qiladi, burada "n" o'lchamli ma'lumotlar sonini ifodalaydi va "k" bu ma'lumotlar orasidagi farqni bildiradi. Bu algoritmda, barcha ma'lumotlar bir-biri bilan taqsimlanadi, shuning uchun belgilangan sonli qatorlar ishlatilmaydi. Shuning uchun, yodda saqlash va kengaytirish uchun yorug'lik kamida talab qilinadi. O'lchamli ma'lumotlar tartiblash algoritmlari uchun boshqa yordamalar, masalan, quicksort va mergesort kabi algoritmlar mavjud. Chunki, bu algoritmlar o'lchamli ma'lumotlar soni katta bo'lgan holatlarda ham samarali ish bajarish imkonini ta'minlaydi. Bundan tashqari, bu algoritmda tartiblashning yuqori va past xatolik ko'rsatishi mumkin. Agar ma'lumotlar juda kichik yoki bir xil bo'lsa, tartiblash tizimining qaror qilishda xatolik ko'rsatishiga olib kelishi mumkin. Bu yuzden, algoritmda tartiblashning qayd etilishi va tartiblash jarayoni ko'rsatilishi lozim. Bucket sort algoritmi amalda, ma'lumotlar turiga va soniga bog'liq bo'lib o'lchamli ma'lumotlarni saralash uchun samarali bo'lib ishlatiladi. Shu sababli, bu algoritmdan foydalanish ko'pchilikda har xil maqsadlar uchun tavsiya etiladi. Bu algoritmdan foydalanishga ko'ra, quyidagi qadamlar ko'rib chiqilishi lozim: Ma'lumotlar turini va chegarasini aniqlash. Mos bucketlar yaratish. Bu, chegaraga qarab mos turli o'lchamli ma'lumotlarni joylashtirish uchun odatda mos qatorlar, massivlar yoki boshqa mos joylar yaratiladi. Ma'lumotlarni mos bucketlarga taqsimlash. Bu qadamda har bir ma'lumot, uning qiymati qaysi bucketda joylashtirilishi kerakligini aniqlaydigan formula yordamida mos bucketga joylashtiriladi. Har bir bucketdagi ma'lumotlarni tartiblash. Bu qadamda, har bir bucketdagi ma'lumotlarni tartiblash uchun qulay va samarali algoritm ishlatilishi mumkin. Chunki, odatda, mos bucketdagi ma'lumotlar soni kichik bo'lib, shuning uchun, o'lchamli ma'lumotlarni saralash uchun xorijiy algoritmlar ishlatilishini tavsiya etiladi. Tartiblangan ma'lumotlarni birlashtirish. Bu qadamda, barcha bucketlardagi tartiblangan ma'lumotlar birlashtiriladi va saralgan ma'lumotlar olinadi. Bucket sort algoritmi samarali va oddiy, ammo o'lchamli ma'lumotlar soni katta bo'lsa qiyinliklar tugallab turadi. Shuning uchun, algoritmdan foydalanishdan oldin, ma'lumotlar turini va sonini tushuntirish lozim. Download 19.31 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling