Ko’p oqimli birlashtirish saralash algoritimi
Ko’p oqimli birlashtirish saralash algoritimi I Bob. Ko’p oqimli birlashtirib saralashning nazariy qismi. ........................... 2 1.2. Saralash tushunchasi ................................................................................. 3 1.3.Birlashtirish saralash ish jarayoni: ............................................................ 5 ADABIYOTLAR RO’YXATI ...................................................................... 20 ILOVA 1. Modul N1 boshlang’ich kod. ....................................................... 21
KIRISH Saralash algoritmlari hozirgi kunda hayotimizda juda ko’p qo’llaniladi. Saralash deb, berilgan obyektlar ketma-ketligini ma`lum mantiqiy tartibda qayta joylashtirish jarayoniga aytiladi. Saralash bir necha ko`rsatkichlarga bog`liq bo`lishi mumkin. Misol uchun maktabda jismoniy tarbiya dars boshida bolalar bo`ylariga qarab safda turishadi. Me`yor topshirish jarayonida esa sinf jurnalidagi familiyalar ketmaketligiga qarab topshirishadi. Shu yerning o`zida 2 ta saralashdan foydalaniladi. Birinchisi bo`y uzunligi bo`yicha, ikkinchisi sinf jurnalida alvabit tartibida saralanadi. Saralash jarayoni qanday kechadi? Saralash jarayoni taqqoslashga asoslangan jarayon hisoblanadi. Biror bir ma’lumotni saralash yoki qandaydir qolipga solish juda ham muhim. Sababi, tartibsiz ma’lumotlar bilan ishlash doimo noqulayliklar keltirib chiqaradi va bunday tizim sekin va xatoliklarga moyil bo’ladi. Tartiblangan ma'lumotlar hammaga yoqadi. Saralash ma'lumotlarni kerakli ketma-ketlikda tartibga solish imkonini beradi, masalan, o'sish yoki kamayish tartibida. Tasavvur qiling-a, siz yirik kompaniyada ishlaysiz va siz xodimlarning ismlarini maoshiga qarab tartiblashingiz kerak. Buning uchun saralash algoritmlari qo'llaniladi. 1
I Bob. Ko’p oqimli birlashtirib saralashning nazariy qismi. 1.1. Saralash tarixi Uch kishini bir necha yillardan buyon uzoq kosmosda olis sayyoralar tomon olib ketayotgan kosmik kema g‘alati oltinrang bulut orasidan uchib o‘tdi. Kemada tug‘ilgan va bir yosh bo‘lgan Век ismli bola hali yurishni o‘rganmagani uchun g‘ildirakli aravachasida katta doira shaklidagi xonasida bir o‘zi aylanib yurishni yoqtirardi. U aravachasini g‘ildiratib borib o‘yinchoqlarini egilib olar, o‘ynab yana otib yuborar edi. Век oltinrang bulut ta‘sirida o‘zida bir necha xil o‘zgarishlami sezdi. Birinchi o‘zgarish zehni bilan bog‘liq bo‘lib, u endi bola bo‘lsa ham arifmetik amaUarni juda tez bajarar, har xil narsalarni turli ko‘rinishdagi miqdorini bir qarashda juda tez aniqlab, taqqoslay olardi. Ikkinchisi, u tajanglashganligi va endi bolalar o‘yinchoqlarini o‘ynagisi kelmay qolganligi edi. Xonada bir o‘zi zerikib qolganligidan chinqirib yig‘lay boshladi. 0 ‘g‘lini ovutishga kelgan ota-ona bolani qunt bilan ota-onasining suhbatini tinglayotganiga e’tibor berishdi. 0 ‘g'lidagi o‘zgarish]arni sezgach, zehni o‘tkir o‘g‘lini ovutish uchun ota-onasi xonani boshqacha jihozlab, faqat bir qo‘li bor hamda g'ildirakda yiiradigan sodda dasturli Saralovchi I nomli robot yasab berishdi. Keyin robotni boshqarishga mo‘Ijallangan dastur tuzishga yo‘naltirilgan turli boshqotirmali masalalami ayta boshlashdi. Biz endi Век bilan birga shu masalalarni ko’rib chiqamiz. Avval xona haqida. Aytganimizdek, doira shakJidagi devorlari bo‘ylab bir xil balandlikda tokchalar o'rnatildi. Har bir tokchaga tartib raqami berildi, xonani bir qismining ko‘rinishi 8.1-rasmda ifodalangan. Kerak boisa, tokchalarni bir nechtasini qoldirib, qolganlarini yopib q o ‘yish mumkin edi. Har bir tokchani qulaylik uchun quyidagicha nom bilan belgilab olamiz: tokcha(I), tokcha(2), ..., tokcha(7), tokcha(21), ..., tokcha(1963), ... va shu asosida ixtiyoriy A tokchadagi buyumni tokcha(A) orqali belgilay olamiz. Ya’ni, tokcha(A) deganda Век va Saralovchi I tokchani emas, shu tartib raqamli tokcha buyumni tushunadi. Tokchalar sonining quyi chegarasi — INF, yuqori chegarasi — SUP kabi belgilanadi. Yuqoridagi belgilashlarga ko‘ra INF=1, SUP 2
esa masala shartlarida aniqlab boriladi. Avval, tokchalarni alifbo bo‘yicha А, B, D kabi belgilamoqchi boMdik. Lekin tokchalar soni ko‘payganda harflar ikkitalab, uchtalab va shu kabi qo‘shib yozilishi anchagina qiyinchilik keltirib chiqarishi noqulaylikka sabab boMardi. Shuning uchun tokchalar soni 10 tadan kam bo‘lsa, biz haflardan ham foydalanaveramiz. Ya’ni, A harfi tokcha(l) ni, В harfi tokcha (2) ni va shu kabi tushunilaveradi. Bu ma’lumotlarning hammasi Век va Saralovchi I ga tushunarli ekan. Yangi Ijrochimiz Saralovchi 1 sonlar ustida arifmetik amallarni bajara oladi va tekshirilayotgan quyidagi shartlami ROST yoki YOLG‘ON ekanligini biladi, ya'ni bu shartlarni tekshira oladi hamda shu asosida mantiqiy xulosa chiqara oladi: = (teng), O (tengem as), < = (katta emas), >(katta). > = (kichik emas). Sodda dasturli Ijrochi Saralovchi I ning ko‘rsatmasi faqatbitta: o‘tkaz tokcha(N), tokcha (M) Bu amalni bajarganda Saralovchi I qoMi bilan tokcha (N) dagi buyumni ko‘tarib, tokcha (M) ga olib qo‘ya oladi. Agar bu jarayonda tokcha(M) bo‘sh bo‘lmasa, undagi buyumni surib tushirib yuborib, bo‘shatadi va so‘ng tokcha (N) dagi buyumni q °‘ya oladi. Umuman, buyum qo‘yilayotgan tokchani bo‘sh deb hisoblash mumkin, baribir undagi buyumlar tashlab yuboriladi. Век faqat shu axborotlar asosida Saralovchi 1 ni boshqarish dastunni tuzishi kerak. Bu yerda qiziq bir usulni ko‘rish mumkin miqdorni o‘zgartinb uning awalgi nomini saqlab qoldik. Bundan qiymati o ‘zgaradigan miqdor tushunchasi paydo bo‘ladi 1.2. Saralash tushunchasi Saralash deb, berilgan obyektlar ketma-ketligini ma`lum mantiqiy tartibda qayta joylashtirish jarayoniga aytiladi. Saralash bir necha ko`rsatkichlarga bog`liq bo`lishi mumkin. Misol uchun maktabda jismoniy tarbiya dars boshida bolalar bo`ylariga qarab safda turishadi. Me`yor topshirish jarayonida esa sinf jurnalidagi familiyalar ketmaketligiga qarab topshirishadi. Shu yerning o`zida 2 ta saralashdan foydalaniladi. Birinchisi bo`y uzunligi bo`yicha, ikkinchisi sinf jurnalida alvabit tartibida saralanadi. Saralash jarayoni qanday kechadi? Saralash jarayoni taqqoslashga asoslangan jarayon hisoblanadi. Biror bir ma’lumotni saralash yoki 3
qandaydir qolipga solish juda ham muhim. Sababi, tartibsiz ma’lumotlar bilan ishlash doimo noqulayliklar keltirib chiqaradi va bunday tizim sekin va xatoliklarga moyil bo’ladi. Tartiblangan ma'lumotlar hammaga yoqadi. Saralash ma'lumotlarni kerakli ketma-ketlikda tartibga solish imkonini beradi, masalan, o'sish yoki kamayish tartibida. Tasavvur qiling-a, siz yirik kompaniyada ishlaysiz va siz xodimlarning ismlarini maoshiga qarab tartiblashingiz kerak. Buning uchun saralash algoritmlari qo'llaniladi. Quyida saralash algoritmlarining asosiy turlarini ko'rib chiqiladi. Avvalambor saralash algoritmi nima ekanligini aniqlab olaylik. Saralash algoritmlari taqqoslash operatorlari yordamida ro'yxatlar va massivlarda berilgan ma'lumotlarni tartiblab beradi. Bu operatorlar massiv elementlariga qo’llaniladi va ularning ma’lumotlar strukturasidagi tartibini belgilaydi. Misol uchun, quyidagi belgilar (1-rasm) ASCII kodi bo'yicha o'sish tartibida saralangan. Saralash jarayonida elementlar bir-biri bilan taqqoslanadi. ASCII jadvalidagi belgining qiymati qanchalik katta bo'lsa, u ro'yxat boshidan shunchalik uzoqroqda joylashgan bo'ladi. [1] Dasturlashda turli xil saralash algoritmlar mavjud. Masalani turi mazmuniga qarab turib saralash algoritmlarning biri qo’llaniladi. Keling eng ko’p qo’llaniladigan saralash algoritmlarini ko'rib chiqamiz. 1.3. Birlashtirish saralash Birlashtirish saralash – massivni kichikroq kichik massivlarga bo‘lish, har bir kichik massivni saralash va so‘ng saralangan pastki massivlarni birlashtirib, yakuniy tartiblangan massivni hosil qilish orqali ishlaydigan tartiblash algoritmi. Oddiy qilib aytganda, birlashtirish tartiblash jarayoni massivni ikki yarmiga bo'lish, har bir yarmini tartiblash va keyin tartiblangan yarmini yana birlashtirishdir. Bu jarayon butun massiv saralanmaguncha takrorlanadi. Sizni qiziqtirgan narsa bu algoritmning o'ziga xosligi nimada. Bizda allaqachon bir qator tartiblash algoritmlari bor, nega bizga bu algoritm kerak? Birlashtirishning asosiy afzalliklaridan biri shundaki, u vaqt murakkabligi O(n log n)ga ega, ya’ni u katta massivlarni nisbatan tez saralay oladi. Bu turg'un tartibdir, ya'ni tartiblash jarayonida teng qiymatli elementlarning tartibi saqlanib qoladi. 4