logo

ALGORITMLAR VA MA’LUMOTLAR

Загружено в:

12.08.2023

Скачано:

0

Размер:

1692.0908203125 KB
Mundarija
Kirish: ...................................................................................................................................................... 2
 Raqamli texnologiyalarning zamonaviy dunyosida dasturlash turli xil kompyuterlar, gadjetlar va 
boshqa elektron qurilmalarning ishlashi uchun asos bo'lib xizmat qiladi. Va algoritmning blok 
diagrammasini tez va to'g'ri tarzda tuzish qobiliyati bu fanning asosidir. Bunday sxema asboblar 
tomonidan bajarilishi kerak bo'lgan jarayonlarning grafik modeli. Turli funktsiyalarni bajaradigan 
alohida funktsiya bloklaridan iborat. Algoritm – maʼlum bir turga oid masalalarni yechishda 
ishlatiladigan amallarning muayyan tartibda bajarilishi haqidagi aniq qoida (dastur). Kibernetika va 
matematikaning asosiy tushunchalaridan biri. Oʻrta asrlarda oʻnli sanoq tizimi boʻyicha toʻrt 
arifmetik amal bajariladigan qoidani   Algaritm   deb atashgan. "Bu qoidalarni matematikaga 9-
asrda   al-Xorazmiy   tomonidan kiritilgan. Yevropada bunday qoidalar uning tug'ilgan yurtiga nisbatan 
lotinchalashtirilgan (Algoritmus yoki Algorithmus shaklida "algorizm" deyilgan), keyinchalik 
"algoritm"ga aylangan" (akademik A. N. Kolmogorov). Fanga "Yevklid algoritmi", "Gʻiyosiddin Koshiy
algoritmi", "Laure algoritmi", "Markov algoritmi" deb ataluvchi algoritmlar maʼlum. Algoritm 
tushunchasi tobora kengayib borib, kibernetikaning nazariy va mantiqiy asosi hisoblangan 
algoritmlar nazariyasi paydo boʻldi. Oʻzbekiston Respublikasida bir necha ilmiy tadqiqot 
muassasalari va hisoblash markazlarida Algoritmdan foydalanish sohasida samarali ishlar olib 
borilmoqda. Masalan Oʻzbekiston Fanlar akademiyasi "Kibernetika" ilmiy ishlab chiqarish 
birlashmasida, Oʻzbekistondagi barcha universitetlarda, Toshkent davlat texnika universitetida, 
Oʻzbekiston Respublikasi Makroiqtisod va statistika vazirligi qoshidagi Hisoblash markazi va boshqa 
muassasalarda olib borilayo’tgan ishlar bunga misol boʻla oladi. ......................................................... 2
I-BOB. Algoritmlar, Graflar va Daraxtlar tushunchasi ............................................................................ 4
1.1 Algoritmni tasvirlash usullari. .......................................................................................................... 4
1.2.Algoritmning asosiy xossalari. .......................................................................................................... 5
1.3 Graflar nazariyasi va uning paydo bo’lishi ....................................................................................... 6
1.4 Daraxtlar haqida tushuncha ............................................................................................................. 8
1.5.Binar daraxtlar .................................................................................................................................. 9
II-BOB. Heap-Sort Algoritmi ................................................................................................................. 10
2.1.Heap-Sort algoritmining yaratilish tarixi ........................................................................................ 10
2.2.Heap-Sort algoritmini tuzilishi ....................................................................................................... 11
2.3 Heap-Sort algoritmini afzalliklari ................................................................................................... 34
2.4 Heap-Sort algoritmini kamchiliklari ............................................................................................... 36
2.5 Heap-Sort algoritmini C++ dasturlash tilida ifodalanishi ............................................................... 37
2.6 Heap-Sort algoritmini Python dasturlash tilida ifodalanishi .......................................................... 40
Xulosa ................................................................................................................................................... 42
Ushbu kurs ishida asosiy mavzu sifatida Heap Sort algoritmi yoritilgan. Dastavval algoritm 
tushunchasi uning paydo bo’lishi haqida malumot berilgan va yana graflar ikkilik daraxtlar haqida 
ham malumotlar keltirilgan. Keyin esa asosiy mavzu sifatida Heap Sort algoritmi haqida to’liq 
malumotlar keltirilgan qachon paydo bo’lgan , kim tomonidan kashf etilgan , algoritmning 
afzalliklari , kamchiliklari va yana algoritmning dasturlash tillarida qanday tuzilishi ko’rsatib natijalari
bilan berilgan. ...................................................................................................................................... 42
 Ushbu kurs ishi 48 listdan iborat bo’lib uch bobga bo’lib yoritilgan (Algoritmlar, Graflar va darahtlar,
Heap Sort algoritmi) bo’lib unda xulosa va foydalanilgan adabiyotlar qismi mavjud. ........................ 42
Foydalanilgan adabiyotlar .................................................................................................................... 44
Foydalanilgan Internet saytlar ............................................................................................................. 44 Kirish :
Raqamli   texnologiyalarning   zamonaviy   dunyosida   dasturlash   turli
xil   kompyuterlar,   gadjetlar   va   boshqa   elektron   qurilmalarning   ishlashi
uchun asos bo'lib xizmat qiladi.   Va algoritmning blok diagrammasini tez
va   to'g'ri   tarzda   tuzish   qobiliyati   bu   fanning   asosidir.   Bunday   sxema
asboblar   tomonidan   bajarilishi   kerak   bo'lgan   jarayonlarning   grafik
modeli.   Turli   funktsiyalarni   bajaradigan   alohida   funktsiya   bloklaridan
iborat.   Algoritm   –   ma lum   bir   turga   oid   masalalarni   yechishdaʼ
ishlatiladigan   amallarning   muayyan   tartibda   bajarilishi   haqidagi   aniq
qoida   (dastur).   Kibernetika   va   matematikaning   asosiy   tushunchalaridan
biri.   O rta   asrlarda   o nli   sanoq   tizimi   bo yicha   to rt   arifmetik   amal	
ʻ ʻ ʻ ʻ
bajariladigan   qoidani   Algaritm   deb   atashgan.   "Bu   qoidalarni
matematikaga   9-asrda   al-Xorazmiy   tomonidan   kiritilgan.   Yevropada
bunday   qoidalar   uning   tug'ilgan   yurtiga   nisbatan   lotinchalashtirilgan
(Algoritmus yoki Algorithmus shaklida "algorizm" deyilgan), keyinchalik
"algoritm"ga   aylangan"   (akademik   A.   N.   Kolmogorov).   Fanga   "Yevklid
algoritmi",   "G iyosiddin   Koshiy   algoritmi",   "Laure   algoritmi",   "Markov	
ʻ
algoritmi"   deb   ataluvchi   algoritmlar   ma lum.   Algoritm   tushunchasi	
ʼ
tobora   kengayib   borib,   kibernetikaning   nazariy   va   mantiqiy   asosi
hisoblangan   algoritmlar   nazariyasi   paydo   bo ldi.   O zbekiston	
ʻ ʻ
Respublikasida   bir   necha   ilmiy   tadqiqot   muassasalari   va   hisoblash
markazlarida   Algoritmdan   foydalanish   sohasida   samarali   ishlar   olib
borilmoqda.   Masalan   O zbekiston   Fanlar   akademiyasi   "Kibernetika"	
ʻ
ilmiy   ishlab   chiqarish   birlashmasida,   O zbekistondagi   barcha	
ʻ
universitetlarda,   Toshkent   davlat   texnika   universitetida,   O zbekiston	
ʻ
Respublikasi   Makroiqtisod   va   statistika   vazirligi   qoshidagi   Hisoblash
markazi   va   boshqa   muassasalarda   olib   borilayo’tgan   ishlar   bunga   misol
bo la oladi.	
ʻ  I-BOB. Algoritmlar, Graflar va Daraxtlar tushunchasi
1.1 Algoritmni tasvirlash usullari.
Biror masalani kompyuterda yechish uchun, avval uning matematik
modelini,   keyin   esa   yechish   algoritmi   va   dasturini   tuzish   kerak   bo‘ladi.
Ushbu   uchlikda   algoritm   bloki   muhim   ahamiyatga   ega.   Endi   algoritm
tushunchasining   ta’rifi   va   xossalarini   bayon   qilamiz.   Masala   yechimini
cheklangan   qadamlar   natijasida   hosil   qiladigan,   oldindan  tayinlangan   va
aniq belgilangan qoidalar   yoki buyruqlar  ketma-ketligi   algoritm   deyiladi.
Soddaroq   qilib   aytganda,   algoritm   bu   -   oldimizga   qo‘yilgan   masalani
yechish   uchun   zarur   bo‘lgan   amallar   ketma-ketligidir.   Algoritm   tuzish   -
bu dasturlashdir, algoritmni tuzuvchilar esa dasturchilardir. 
Algoritmlarning   eng   ko‘p   uchraydigan   turlari   bilan   tanishamiz.
Algoritmning   so‘zlar   orqali   ifodalanishi.   Bu   usulda   ijrochi   uchun
beriladigan   har   bir   ko‘rsatma   jumlalar,   so‘zlar   orqali   buyruq   shaklida
beriladi.   Algoritmning   formulalar   bilan   ifodalanish   usulidan   matematika,
fizika, kimyo kabi aniq fanlardagi formulalarni o‘rganishda foydalaniladi.
Bu   usul   ba’zan   analitik   ifodalash   deyiladi.   Algoritmlarning   maxsus
geometrik   shakllar   yordamida   ifodalanishida   masala   yechish   jarayoni
aniq   va   ravon   tasvirlanadi   va   bu   ko‘rinish   blok-sxema   deyiladi.
Algoritmning   jadval   ko‘rinishda   berilishi .   Algoritmning   bunday
ifodasidan   ham   ko‘p   foydalanamiz.   Masalan,   maktabda   qo‘llanib
kelinayo’tgan   to‘rt   xonali   matematik   jadvallar   yoki   turli   xil   lotereyalar
jadvali.   Funksiyalarning   grafiklarini   chizishda   ham   algoritmlarning
qiymatlari   jadvali   ko‘rinishlaridan   foydalanamiz.   Bu   kabi   jadvallardan
foydalanish   algoritmlari   sodda   bo‘lgani   tufayli   ularni   o‘zlashtirib   olish
oson.     Yuqorida   ko‘rilgan   algoritmlarni   tasvirlash   usullarining   asosiy
maqsadi, qo‘yilgan masalani yechish uchun zarur bo‘lgan amallar ketma- ketligining   eng   qulay   holatini   aniqlash   va   shu   bilan   inson   tomonidan
dastur   yozishni   yanada   osonlashtirishdan   iborat.   Aslida,   dastur   ham
algoritmning   boshqa   bir   ko‘rinishi   bo‘lib,   u   insonning   kompyuter   bilan
muloqotini qulayroq amalga oshirish uchun mo‘ljallangan.
1.2.Algoritmning asosiy xossalari.
Algoritmning   5   ta   asosiy   xossasi   bor.     1.   Diskretlilik
(Cheklilik).   Bu   xossaning   mazmuni   algoritmlarni   doimo   chekli
qadamlardan   iborat   qilib   bo‘laklash   imkoniyati   mavjudligida.   Ya’ni   uni
chekli   sondagi   oddiy   ko‘rsatmalar   ketma-ketligi   shaklida   ifodalash
mumkin. Agar kuzatilayo’tgan jarayonni chekli qadamlardan iborat qilib
qo‘llay   olmasak,   uni   algoritm   deb   bo‘lmaydi.   2.Tushunarlilik.   Biz
kundalik   hayotimizda   berilgan   algoritmlar   bilan   ishlayo’tgan   elektron
soatlar , mashinalar, dastgohlar, kompyuterlar, turli avtomatik va mexanik
qurilmalarni kuzatamiz. Ijrochiga tavsiya etilayo’tgan ko‘rsatmalar uning
uchun   tushinarli   mazmunda   bo‘lishi   shart,   aks   holda,   ijrochi   oddiygina
amalni   ham   bajara  olmaydi.  Bundan  tashqari,   ijrochi  har   qanday  amalni
bajara   olmasligi   ham   mumkin.Har   bir   ijrochining   bajarishi   mumkin
bo‘lgan   ko‘rsatmalar   yoki   buyruqlar   majmuasi   mavjud,   u   ijrochining
ko‘rsatmalar   tizimi   (sistemasi)   deyiladi.   Demak,   ijrochi   uchun
berilayo’tgan har bir ko‘rsatma ijrochining ko‘rsatmalar tizimiga mansub
bo‘lishi   lozim.   Ko‘rsatmalarni   ijrochining   ko‘rsatmalar   tizimiga   tegishli
bo‘ladigan qilib ifodalay olishimiz muhim ahamiyatga ega. Masalan, quyi
sinfning a’lochi o‘quvchisi  "son kvadratga oshirilsin" degan ko‘rsatmani
tushunmasligi   natijasida   bajara   olmaydi,   lekin   "son   o‘zini   o‘ziga
ko‘paytirilsin"   shaklidagi   ko‘rsatmani   bemalol   bajaradi ,   chunki   u
ko‘rsatma   mazmunidan   ko‘paytirish   amalini   bajarish   kerakligini
anglaydi.   3.   Aniqlik .   Ijrochiga   berilayo’tgan   ko‘rsatmalar   aniq   va
mazmunli   bo‘lishi   zarur.   Chunki   ko‘rsatmadagi   noaniqliklar   mo‘ljaldagi maqsadga erishishga olib kelmaydi. Inson uchun tushunarli bo‘lgan "3-4
marta   silkitilsin",   "5-10   daqiqa   qizdirilsin",   "1-2   qoshiq   solinsin",
"tenglamalardan   biri   echilsin"   kabi   noaniq   ko‘rsatmalar   kompyuterni
qiyin   ahvolga   solib   qo‘yadi.   Bundan   tashqari,   ko‘rsatmalarning   qaysi
ketma-ketlikda   bajarilishi   ham   muhim   ahamiyatga   ega.   Demak,
ko‘rsatmalar   aniq   berilishi   va   faqat   algoritmda   ko‘rsatilgan   tartibda
bajarilishi   shart   ekan.   4.Ommaviylik .   Har   bir  algoritm   mazmuniga  ko‘ra
bir turdagi masalalarning barchasi uchun ham o‘rinli bo‘lishi kerak. Ya’ni
masaladagi   boshlang‘ich   ma’lumotlar   qanday   bo‘lishidan   qat’i   nazar
algoritm   shu   xildagi   har   qanday   masalani   yechishga   yaroqli   bo‘lishi
kerak. Masalan,  ikki oddiy kasrning umumiy maxrajini  topish algoritmi,
kasrlarni turlicha o‘zgartirib bersangiz ham ularning umumiy maxrajlarini
aniqlab   beraveradi.   Yoki   uchburchakning   yuzini   topish   algoritmi,
uchburchakning   qanday   bo‘lishidan   qat’i   nazar,   uning   yuzasini   hisoblab
beraveradi.  5.   Natijaviylik .   Har  bir  algoritm  chekli  sondagi  qadamlardan
so‘ng, albatta, natija berishi shart. Bajariladigan amallar ko‘p bo‘lsa ham
baribir   natijaga   olib   kelishi   kerak.   Chekli   qadamdan   so‘ng   qo‘yilgan
masala   yechimga   ega   emasligini   aniqlash   ham   natija   hisoblanadi.   Agar
ko‘rilayo’tgan   jarayon   cheksiz   davom   etib   natija   bermasa,   uni   algoritm
deb atay olmaymiz.
1.3 Graflar nazariyasi va uning paydo bo’lishi
1736   yilda   L.   Eyler   tomonidan   o‘sha   davrda   qiziqarli   amaliy
masalalardan   biri   hisoblangan   Kyonigsberg   ko‘priklari   haqidagi
masalaning   qo‘yilishi   va   yechilishi   graflar   nazariyasining   paydo
bo‘lishiga asos bo‘ldi.
Graflarni o rganish bilan shug ullanadigan diskret matematikaning ʻ ʻ
bo limi “Graflar nazariyasi” deb ataladi. Graflar nazariyasida ushbu	
ʻ
matematik obyektlarning asosiy tushunchalari, xususiyatlari, tasvirlash usullari va qo llanilish sohalari batafsil ko rib chiqilgan. Bizni faqatʻ ʻ
dasturlashda muhim bo lgan jihatlari qiziqtiradi.	
ʻ
Graflar  - bu chiziqlar bilan bog langan nuqtalar to plami. Nuqtalar	
ʻ ʻ
uchlar  (tugunlar) chiziqlar esa  qirralar  (yoylar) deb nomlanadi.
Grafning ifodalanishi. Grafning to plam nazariya bo yicha ta’rifi	
ʻ ʻ . Bizga
?????? - bo sh bo lmagan to plam berilgan, masalan {	
ʻ ʻ ʻ ?????? 1,  ?????? 2,  ?????? 3,  ?????? 4,  ?????? 5}.
Uning barcha ikki elementli  ?????? (2) ichki to plamlari to plamini	
ʻ ʻ
yozamiz. Bizning misolimiz uchun ushbu to plam quyidagicha bo ladi:	
ʻ ʻ
Ixtiyor ravishda ba’zi bir  ??????   ⊆   ?????? (2) ni olamiz, masalan:
〈?????? ,  ??????〉  juftligi yo naltirilmagan G grafi deb nomlanadi, unda 	
ʻ ??????  -
uchlar to plami, 	
ʻ ??????  	- qirralarning to plami, 	ʻ ?????? (2)	 to plamining ichki	ʻ
to plami hisoblanadi. Yuqoridagilardan kelib chiqib, ushbu ta’rif odatda 	
ʻ
quyidagicha shakllantiriladi:  〈?????? ,  ??????〉  oriyentirlanmagan graflar juftligi deb 
ataladi, agar  ??????  uchlar deb ataladigan bo sh bo lmagan elementlar 	
ʻ ʻ
to plami bo lsa va 	
ʻ ʻ ??????  –  ??????  dagi qirralar deb ataluvchi turli elementlarning 
tartibsiz juftlari to plami bo lsa. Graflar nazariyasida turli xil 	
ʻ ʻ
munosabatlarni yozishda VG yoki V(G) yozuvlari, G graf qirralarining 
to plami uchun EG yoki E(G) yozuvlari ishlatiladi.	
ʻ
Grafni namoyish qilishning vizual usuli - bu chizmalar
(diagramma), unda uchlar nuqta, doiralar yoki boshqa figuralar bilan
tasvirlangan va qirralar juft uchlari tasvirlarini bir-biriga bog laydigan	
ʻ
chiziqlar bilan tasvirlangan. Yuqorida tavsiflangan grafni bunday
tasvirlash uchun quyidagi variantlar berilgan.
Graf  - bu abstrakt obyekt bo lib, uchlar to plami (tugunlar) va	
ʻ ʻ
qirralarning to plami - uchlar juftliklari orasidagi bog lanishlardan	
ʻ ʻ
tashkil topadi (ulanishlar). Graf mavzusi juda keng. Graflar diskret
matematikaning o rganish mavzusidir (bu yerda graf tushunchasining	
ʻ
aniqroq ta’rifi berilgan). Graf murakkab tuzilgan ma’lumotni tavsiflash uchun ishlatiladi va shuning uchun katta amaliy ahamiyatga ega.
Matematikada graflar paydo bo lishiga Eyler asarlari yordam berdi.ʻ
Graflar bilan qayerda uchrashamiz? Ehtimol, ular bilan qayerda
uchrashmasligimizni aytish osonroq. Ya’ni biz graflarda juda ko p 	
ʻ
holatda uchratamiz. Misol qilib quyidagilarni keltirishimiz mumkin:
• Lokal yoki global tarmoq modeli
• Algoritmlarning blok-sxemasi
• Elektr sxemalar
• Oila daraxti (Shajara)
• Metro xaritasi
• Ma’lumotlar bazasi modeli
• Aqlli xaritalar
va boshqa ko plab sohalarda qo llanilib kelmoqda. Ushbu darsda butun	
ʻ ʻ
graflar nazariyasini olish mumkin emas. Shuning uchun qisqacha
ma’lumotlarni keltirib o tamiz	
ʻ
1.4 Daraxtlar haqida tushuncha
Daraxt  - bu bog langan asiklik grafik, ya’ni sikllar yo q va tepalik juftligi	
ʻ ʻ
orasida   bitta   yo l   bor.   Kirishning   nol   darajasiga   ega   bo lgan   uch
ʻ ʻ
daraxtning   ildizi,   chiqish   nol   darajaga   ega   tugunlar   esa barglar   deb
nomlanadi.
  Daraxt tuzilmasi quyidagi ko‘rinishda bo‘lishi mumkin:          Bu   daraxt   oila   tuzilmasini   ifoda   etmoqda.   Daraxt   tugunlari   shajarani
ifodalamoqda,   chiziqlar   esa   ular   orasidagi   bog‘lanishni.   Bu   turdagi
ma lumotlarni   saqlash   uchun   daraxt   tuzilmasi   eng   qulay   tuzilmaʼ
hisoblanadi. Ikkilik (Binar) daraxt
1.5.Binar daraxtlar Yuqorida   ko‘rsatilgan   daraxtga   o‘xshaydi,   lekin   ba zi   qoidalarga   asosanʼ
quriladi:
 Har bir tugundagi uchlari soni 2   tadan   oshmasligi zarur
 Xar   qanday   tugun   qiymatidan   kichik   bo‘lgan   qiymat   chap   uchga
yoki chap                     tugunning chap uchiga yoziladi
 Xar   qanday   tugun   qiymatidan   katta   bo‘lgan   qiymat     o‘ng   uchga
yoki ong tugunning o‘ng uchiga yoziladi
Keling shu qoidalar asosida qurilgan daraxtni   ko‘raylik:     
Ahamiyat   bering,   bosh   tugun   (8)dan   chapdagi   barcha   elementlarning
qiymatlari   sakkizdan   kichik   undan   o‘ngdagisi   esa   sakkizdan   katta.   Bu
qoidalar   daraxtning   xar   bir   tuguniga   tegishli.   Keling   daraxt   bo‘sh
bo‘lgandan boshlab qanday qurilganini qarab chiqamiz. Birinchi navbatda
8   ni   qo‘shamiz.   Dastlab   daraxt   bo‘sh   bo‘lgani   sabab   u   bosh   tugun
hisoblanadi. Undan keyin 4 ni qo‘shamiz. 8 dan 4 kichik bo‘lgani uchun
tepadagi   qoidalarga   amal   qilgan   xolda   4   ni   8   ning   chap   tomoniga
yozamiz.   8   ning     hech   qanday   tugun   bo‘lmagani   uchun   4   shu   joyda
qoladi.   Endi   2   kiritamiz.   Ma lumki   2   dan   8   katta,   shu   sabab   chapga	
ʼ
yuramiz.   Chapda   allaqachon   qiymat   borligi   sabab   chap   uch   qiymati   2
bilan   solishtiriladi.   Chap   farzandning   qiymati   (4)   2   dan   kata   bo‘lgani
sabab   4   ning   chap   tomoni   qaraladi.   4   ning   chap   tomonida   element
bo‘lmagani sabab 2 shu joyga joylashtiriladi. Shunday qilib kiritilgan xar
bir element uchun yuqoridagi solishtiruvlar qaytariladi.
II-BOB. Heap-Sort Algoritmi
2.1.Heap-Sort algoritmining yaratilish tarixi Heapsort   algoritmi   1964   yilda   JWJ   Uilyams   tomonidan   ixtiro   qilingan   .
Bu,   shuningdek,   Uilyams   tomonidan   o'ziga   xos   foydali   ma'lumotlar
tuzilmasi   sifatida   taqdim   etilgan   algoritmning   tug'ilishi   edi.     O shaʻ
yili   RW   Floyd   massivni   o z   joyida   saralashi   mumkin   bo lgan	
ʻ ʻ
takomillashtirilgan   versiyani   nashr   etdi   va        daraxtlarni   
saralash   algoritmi   bo yicha o zining oldingi tadqiqotlarini davom ettirdi 	
ʻ ʻ .
2.2.Heap-Sort algoritmini tuzilishi
Heapsort algoritmini ikki qismga bo'lish mumkin.
Birinchi   bosqichda   ma'lumotlardan   ikkilik   daraxt   quriladi
(qarang:   Ikkilik massiv§ Massivni qurish   ).   Massiv ko'pincha to'liq   ikkilik
daraxtning   joylashuvi   bilan   massivga   joylashtiriladi   .   To'liq   binar   daraxt
ikkilik   daraxt   strukturasini   massiv   indekslari   bilan   taqqoslaydi;   har   bir
massiv indeksi tugunni ifodalaydi;   tugunning ildizi, chap pastki uchi yoki
o'ng   pastki   uchi   indeksi   oddiy   ifodalardir.   Nolga   asoslangan   massiv
uchun   ildiz   tugun   0   indeksida   saqlanadi;   agar   i joriy   tugunning   indeksi
bo'lsa, u holda
iParent(i) = ildiz((i-1) / 2)
//bu   yerda   ildiz   funksiyalari   haqiqiy   sonni   eng   katta   //bosh   butun   songa
moslashtiradi.
iLeftChild(i) = 2*i + 1
iRightChild(i) = 2*i + 2
// iParent = asos 
// iLeftChild = chap tarafdagi element , Chap uch deb yuritiladi
// IRightChild = o’ng tarafdagi element, O’ng uch deb yuritiladi8 Ikkinchi   bosqichda   eng   katta   elementni   (daraxtning   ildizi)   qayta-
qayta   olib   tashlash   va   uni   massivga   kiritish   orqali   tartiblangan   massiv
yaratiladi.   Massiv   xususiyatini   saqlab   qolish   uchun   har   bir   olib
tashlashdan  so'ng   massiv   yangilanadi.   Barcha  ob'ektlar  ikkilik  daraxtdan
olib tashlangandan so'ng, natija tartiblangan massiv bo'ladi.
Heapsort   joyida   amalga   oshirilishi   mumkin.   Massivni   ikki   qismga
bo'lish   mumkin,   tartiblangan   massiv   va   massiv.   Massivlarni   massivlar
sifatida   saqlash   bu   erda   diagramma   qilingan   .   Massivning   o'zgarmasligi
har   bir   ekstraksiyadan   keyin   saqlanib   qoladi,   shuning   uchun   yagona
xarakat - ekstraksiya.
Ikkilik daraxt ko'rinishi To'liq ikkilik daraxt balandligi 3 10   Tugunli   to'liq   ikkilik   daraxt   va  
balandligi.
Massivning atributlari
 Ikki   atributga   ega   bo'lgan   ikkilik   daraxtni   taqdim   etuvchi   A
massivi:
 uzunlik[A]: massivdagi elementlar soni.
 massiv-o'lchami[A]: massiv bilan saqlanadigan elementlar soni
 massiv A.
 uzunlik[A] ≥ massiv o'lchami[A]
Asosiy protseduralar1/2
 Agar n ta tugunli to liq binar daraxt ko rsatilgan bo lsaʻ ʻ ʻ
 ketma-ket, keyin i, 1 ≤ i ≤ n indeksli har qanday tugun uchun
mavjud
 A[1] - daraxtning ildizi
 PARENT(i)  ⌊ i/2 ⌋ , agar i ≠ 1 bo lsa	
ʻ
 chap uch LEFT(i) 2i da
 o'ng uch O'NG(i) 2i 1 da Asosiy protseduralar2/2
 LEFT   protsedurasi   bitta   ko'rsatmada   2i   ni   oddiygina
hisoblashi  mumkin i  ning ikkilik ko'rinishini  o'zgartirish bir
bir pozitsiyasini qoldirdi.
 Xuddi shunday, RIGHT protsedurasi 2i 1 ni tezda hisoblashi
mumkin
i ning ikkilik tasvirini siljitish bir bir pozitsiyani qoldirdi va
past tartibli bir sifatida 1 ni qo'shish.
 -PARENT   protsedurasi   i   ni   o'ngga   siljitish   orqali   ⌊ i/2 ⌋   ni
hisoblashi mumkin bir holati
Massiv xususiyatlari
 Ikki xil ikkilik massivlar mavjud: max-heaps va min-heaps.
 Max-heapda max-heap xossasi har bir i tugun uchun
ildizdan tashqari,
 A[PARENT(i) ] ≥ A[i] .
 max-massividagi eng katta element ildizda saqlanadi
 tugunga   ildiz   o’tgan   pastki   daraxt   bundan   katta   bo'lmagan
qiymatlarni o'z ichiga oladi tugunning o'zida joylashgan
 min-heapda min-heap xossasi har bir tugun uchun i
ildizdan tashqari,
 A[PARENT(I)] ≤ A[I].
 min-uyidagi eng kichik element ildizda joylashgan  tugunga ildiz o’tgan pastki daraxt bundan kichik bo'lmagan
 qiymatlarni o'z ichiga oladi tugunning o'zida joylashgan
Maksimal va -minimal massivlar
-
-Massivning balandligi
 -Massivdagi tugunning balandligi uning qirralari sonidir
 T-ugundan barggacha bo'lgan eng uzun oddiy pastga yo'l va
m-assivning balandligi ildizning balandligi bo'lishi kerak, ya'ni
D (-lgn).
 Mas-alan:
 2-tugunning balandligi 2 ga teng massivning balandligi 3 ga teng -
I-kkilik daraxtdan massiv hosil qilish (40, 80, 35, 90, 45, 50, 70)
- • Mana, yig'ilgandan keyin namunali ikkilik daraxt
• E'tibor bering, yig'ilgan saralangan degani emas
• Yig'ish ikkilik daraxt shaklini o'zgartirmaydi;
b-u ikkilik daraxt muvozanatli va chapga asoslangan, chunki u
shu tarzda boshlandi
Ild-izni olib tashlash 
• E'-tibor bering, eng katta raqam endi ildizda
• Ay-taylik, biz ildizni o'chiramiz:
•-  Ikkilik daraxtni  qanday  qilib tuzatishimiz  mumkin, shunda u yana  bir
b-or muvozanatlanadi va chapga asoslangan? • Yechim: eng o'ngdagi bargni eng chuqur darajada olib tashlang
v-a yangi ildiz uchun foydalaning
R-e-Heapify usuli
• Bizning daraxtimiz muvozanatli va chapga asoslangan, ammo endi ma-
ssiv emas
• Biroq, faqat ildizda yig'ish xususiyati yo'q
• Biz ildizni siftUp() qilishimiz mumkin
•   Buni   qilgandan   so'ng,   uning   bitta   va   faqat   bitta   ildiz   tuguni   bo'lishi
mumkin massiv muvozanatni yo'qotdi
Re-Heapify usuli (davomi)
• Endi ildizning chap uchi (hali 11 raqami) etishmaydi
massiv xususiyati
• Biz ushbu tugunni siftUp() qilishimiz mumkin •   Buni   qilgandan   so'ng,   uning   bitta   va   faqat   bitta   ildiz   tuguni   bo'lishi
mumkin
massiv muvozanatni yo'qotdi
Re-Heapify usuli (davomi)
• Endi ildizning chap uchining o'ng uchi (hali
11 raqami) massiv xususiyatiga ega emas:
o
• Biz ushbu tugunni siftUp() qilishimiz mumkin
•   Buni   qilgandan   so'ng,   uning   bitta   va   faqat   bitta   ildiz   tuguni   bo'lishi
mumkin
massiv xususiyatini yo'qotdi - lekin yo'q, chunki bu barg
Re-Heapify usuli (davomi)
• Daraxtimiz yana bir massivdir, chunki undagi har bir tugun
massiv xususiyatiga ega • Yana bir bor, eng katta  qiymat ildizda
• Daraxt bo'shab qolguncha bu jarayonni takrorlashimiz mumkin
• Bu qiymatlar ketma-ketligini kattadan kichikga qarab hosil qiladi
Massivni saralash algoritmi
• Ikki bosqichdan iborat
• Birinchi bosqichda ma'lumotlardan massiv hosil bo'ladi.
Massiv ko'pincha qatorga joylashtiriladi
to'liq ikkilik daraxtning sxemasi.
• Ikkinchi bosqichda tartiblangan massiv tomonidan yaratiladi
eng katta elementni qayta-qayta olib tashlash
massiv (daraxtning ildizi) va uni kiritish
massivga. Massiv har biridan keyin yangilanadi
massivni saqlab qolish uchun olib tashlash. Bir marta barcha ob'ektlar
ikkilik daraxtdan olib tashlangan, natija a
tartiblangan massiv.
Ikkilik daraxtini qurish
• Pointerni amalga oshirish
• Massivni amalga oshirish
– Nolga asoslangan massiv uchun ildiz tugun 0 indeksida saqlanadi;
– agar i joriy tugunning indeksi bo‘lsa, u holda
i’s LeftChild = 2*i 1
i’s RightChild = 2*i 2
ildiz tuguni = ildiz ((i-1) / 2)
– Bir asosli massiv uchun ildiz tugun 1-indeksda saqlanadi;
– agar i joriy tugunning indeksi bo‘lsa, u holda
i’s LeftChild = 2*i
i’s RightChild = 2*i 1
ildiz tuguni = ildiz (i/ 2)
Elementlarni massivga solish (nolga asoslangan massiv)
• E-slatma:
– i indeksining chap tomoni 2*i 1 indeksida
– i indeksining o‘ng tomoni 2*i 2 indeksida
– Misol: 3 (19) tugunning uchlari 7 (18) va 8 (14)
– Misol: 5 (14) tugunining ildizi 2 (14) ildiz (i-1/2)
Elementlarni massivga solish
(bitta asosli massiv)
• Eslatma: – i indeksining chap uchi 2*i indeksida
– i indeksining o‘ng tomoni 2*i 1 indeksida
– Misol: 4 (19) tugunning uchlari 8 (18) va 9 (14)
– 7 (15) tugunning ildizi 3 (17) ildiz (i/2)
Ildizni olib tashlash va almashtirish
• “Ildiz” massivdagi birinchi elementdir
• “Eng chuqur darajadagi eng o‘ngdagi tugun” oxirgi element hisoblanadi
• Ul-arni almashtiring...
-
•- ...Va massivdagi oxirgi element endi yo‘qdek ko‘ring
m-avjud - ya'ni "oxirgi indeks" 12 (9 qiymatini o'z ichiga oladi)
Qa-yta yig'ing va takrorlang
Ild-iz tugunini qayta yig'ing (indeks 1, 12 dan iborat)...
Saral-anmagan Saralangan 
massiv massiv
- ...Va yana, ildiz tugunini olib tashlang va almashtiring
•- Shuni yodda tutingki, “oxirgi” massiv indeksi o'zgartirilgan
•-   Oxirgi   birinchi   bo'lguncha   va   massiv   tartiblashtirilguncha
takrorla-ng!
-Ushbu bobning qolgan qismi
 -Qolganlarida biz ba'zi asosiy tartiblarni taqdim etamiz
u-shbu bobdan. - O-(lgn) vaqtida ishlaydigan MAX-HEAPIFY protsedurasi
Ma-x-heap xususiyatini saqlash uchun kalit.
 O(n-) vaqtida ishlaydigan BUILD-MAX-HEAP protsedurasi,
Tartib-siz kirish massividan maksimal massiv hosil qiladi.
 O(nlgn-)   vaqtida   ishlaydigan   HEAPSORT   protsedurasi   a   ni
saralaydi
massiv -tuzilishida.
 MAX-H-EAP-INSERT,   HEAP-EXTRACT-MAX,   HEAP-
INCREA-SE-KALITI,   va   O(lgn)   vaqtida   bajariladigan   HEAP-
MAXIMUM   protseduralari,   massiv   ma'lumotlar   tuzilmasidan
ustuvor navbat sifatida foydalanishga ruxsat bering.
MAX-HEAPIFY protsedurasi1/2
 MAX-HEAPIFY   maks.ni   boshqarish   uchun   muhim   pastki   dastur
hisoblanadi.
 Kirish: massiv A va indeks i  Natija:   i   indeksida   ildiz   o’tgan   pastki   daraxt   maksimal   uchga
aylanadi
 Faraz   qilaylik:   LEFT(i)   va   RIGHT(i)   ga   ildiz   o’tgan   ikkilik
daraxtlar
max-massivlar,   lekin   A[i]   uning   uchlaridan   kichikroq   bo'lishi
mumkin
 Usul: A[i] dagi qiymat max-ikkilik daraxtda "pastga tushib ketsin"
MAX-HEAPIFY protsedurasi2/2
MAX HEAPIFY(A, ‐ i )
1.  l  ←LEFT( i )
2.  r  ← RIGHT( i )
3.  if  l  ≤  heap size	
‐ [A] and A[ l ] > A[ i ]
4.  then  largest  ←  l
5.  else  largest  ←  i
6.  if  r  ≤  heap size
‐ [A] and a[ r ] > A[ largest ]
7.  then  largest  ←  r
8.  if  largest  ≠  i
9.  then  exchange A[ i ] A[ largest ]
10. MAX HEAPIFY (A, 	
‐ largest ) 
MAX-HEAPIFY protsedurasiga misol Vaqtning murakkabligi
 O'zaro munosabatlarni o'rnatish uchun D(1) vaqt kerak bo'ladi
 A[i], A[LEFT(i)] va A[RIGHT(i)] elementlari.
 Shuningdek,   biz   MAX-HEAPIFY   ni   biriga   ildiz   o’tgan   pastki
daraxtda ishga tushirishimiz kerak i tugunining uchlari.
 Uchlar pastki daraxtlarining har biri ko'pi bilan 2n/3 o'lchamga ega
 Eng yomon holat daraxtning oxirgi qatori to'liq yarmiga to'lganida
sodir bo'ladi
 MAX-HEAPIFY ish vaqti
 T ( n ) =  T (2 n /3) +  Θ (1) =  O (lg n)
 Uni bosh teoremaning 2-holatiga ko'ra yeching
 Shu bilan bir qatorda biz MAX-ning ishlash vaqtini tavsiflashimiz
mumkin.
O(h) kabi h balandlikdagi tugunga HEAPIFY.  Massivni   aylantirish   uchun   MAX-HEAPIFY   protsedurasidan
foydalanishimiz mumkin A=[1..n] ni pastdan yuqoriga qarab maks.
 A[( ⌊ n/2 ⌋   1)…n   ]   pastki   massivdagi   elementlarning   barchasi
quyidagi   barglardir.   daraxt,   shuning   uchun   har   biri   1   elementli
massivdir.
 BUILD-MAX-HEAP protsedurasi qolgan qismidan o'tadi
daraxt tugunlari va har birida MAX-HEAPIFY ishlaydi
BUILD MAX HEAP(A)‐ ‐
1.  heap size
‐ [A] ←  length [A]
2.  for  i  ←  ⌊ length[A] /2 ⌋   downto  1
3.  do  MAX HEAPIFY(A,	
‐ i ) 
Misol To'g'rilik 1/2
 BUILD-MAX-HEAP nima uchun to'g'ri ishlashini ko'rsatish uchun
biz foydalanamiz
 quyidagi tsiklning o'zgarmasligi:  2-3-qatorlardan iborat for tsiklining har bir iteratsiyasi boshida, har
biri i 1, i 2, …, n tugun max-daraxtning ildizidir
BUILD MAX HEAP(A)‐ ‐
1.  heap size
‐ [A] ←  length [A]
2.  for  i  ←  ⌊ length[A] /2 ⌋   downto  1
3.  do  MAX 
Biz buni ko'rsatishimiz kerak
 bu invariant birinchi sikl iteratsiyasidan oldin rost
 siklning har bir iteratsiyasi o'zgarmaslikni saqlaydi
 o'zgarmas to'g'rilikni ko'rsatish uchun foydali xususiyatni beradi
sikl tugagach 
To'g'rilik 2/2
 Initializatsiya: siklning birinchi iteratsiyasidan oldin, i =  ⌊ n/2 ⌋ .
⌊ n/2 ⌋  1, …n barg va shuning uchun a ning ildizi hisoblanadi
arzimas maksimal massiv.
 Ta'minot: Loop o'zgarmasligiga ko'ra, i tugunining uchlari
maksimal massivlarning ikkala ildizi. Bu aniq
MAX-HEAPIFY (A, i) chaqiruvi uchun zarur shart
i tugunini max-heap ildiziga aylantirish. Bundan tashqari,
MAX-HEAPIFY chaqiruvi ushbu xususiyatni saqlaydi
tugunlar i 1, i 2, . . . , n - max-massivlarning barcha ildizlari.
 Tugatish: Tugatishda i=0. Loop invariant bo'yicha, har bir tugun
1, 2, …, n max-daraxtning ildizidir.
Xususan, 1-tugun.
Vaqt murakkabligi1/2
 1-tahlil:
 MAX-HEAPIFY   ga   har   bir   murojaat   O(lgn)   turadi   va
bunday O(n) mavjud  murojaatlar.
 Shunday qilib, ish vaqti O(nlgn). Bu yuqori chegara orqali
 to'g'ri, asimptotik jihatdan qattiq emas.
 2-tahlil:
o n-elementlar to plami uchun balandlik ʻ ⌊ lgn ⌋  va ko pi bilan 	ʻ ⌈ n
/ 2h 1 ⌉
har qanday balandlikdagi tugunlar h.\
o MAX-HEAPIFY   tuguniga   chaqirilganda   talab   qilinadigan
vaqt
h balandligi O(h).
o  Umumiy xarakat
Vaqt murakkabligi2/2
 Oxirgi yig'indi hosil bo'ladi
 Shunday   qilib,   BUILD-MAX-HEAP   ning   ish   vaqti   quyidagicha
chegaralanishi mumkin
 Biz   chiziqli   tartibsiz   massivdan   maksimal   massivni   qurishimiz
mumkin bo’lgan vaqt
  Massivni tanlash algoritmi
 Massivning maksimal elementi ildizda saqlanganligi sababli,
A[1] biz uni A[n] bilan almashtira olamiz.
 Agar biz hozir A[n] ni “tashlab qo'ysak”, A[1...(n−1)] osonlik bilan
bo'lishi mumkinligini ko'ramiz. maksimal massivga aylantiriladi.
 A[1] ildizining uchlari max-massivlar bo'lib qoladi, lekin yangi
root   A[1]   elementi   max-heap   xususiyatini   buzishi   mumkin,
shuning   uchun  biz   maksimal   ikkilik  daraxtni   qayta   sozlash   kerak.
Bu MAX-HEAPIFY (A, 1) ni chaqirishdir.
HEAPSORT( A )
1. BUILD MAX HEAP(‐ ‐ A )
2.  for  i  ←  length [ A ]  downto  2
3.  do  exchange A[1] A[ i ]
4.  heap size	
‐ [A] ←  heap size	‐ [A] -1
5. MAX HEAP	
‐ Vaqtning murakkabligi  HEAPSORT protsedurasi O(nlgn) vaqt oladi
 BUILD-MAX-HEAP-ga murojaat O(n) vaqt oladi
 MAX-HEAPIFY ga har bir n−1 chaqiruv O(lgn) vaqtni oladi
Ustuvor navbatlarni massivlash
 Massivlar ustuvor navbatlarni samarali amalga oshiradi.
 Ikki xil ustuvor navbatlar mavjud: maksimal ustuvor navbatlar
va minimal ustuvor navbatlar.
 Biz   bu   yerda   maksimal   ustuvor   navbatlarni   qanday   amalga
oshirishga   e'tibor   qaratamiz,   ular   o'z   navbatida   max-massivlarga
asoslangan.
 Ustuvor navbat - bu S ikkilik daraxtini saqlash uchun ma'lumotlar
tuzilmasi
elementlarning har biri kalit deb ataladigan tegishli qiymatga ega.
Ustuvor navbatlar
 Maksimal   ustuvorlik   navbati   quyidagi   amallarni   qo'llab-
quvvatlaydi.
 INSERT(S, x): S to plamga x elementini kiritadi.ʻ
 MAXIMUM(S): eng katta kalitli S elementini qaytaradi.
 EXTRACT-MAX(S): S elementini olib tashlaydi va qaytaradi
eng katta kalit.
 ORTISH-KEY (S, x, k): x element kalitining qiymatini
yangi qiymat k. k ≥ x ning joriy kalitini qabul qiling
qiymat
Maksimal elementni topish
 MAXIMUM(S): eng katta kalitli S elementini qaytaradi.
 Maksimal elementni olish oson: bu ildiz.
HEAP MAXIMUM(A)	
‐
1.  return A[1]
 HEAP-MAXIMUM ning ishlash vaqti T(1) Maksimal element chiqarilmoqda
 EXTRACT-MAX(S): S elementini olib tashlaydi va qaytaradi
eng katta kalit.
HEAP EXTRACT MAX(A)‐ ‐
1.  if  heap size	
‐ [A] < 1
2.  then error  “heap underflow”
3.  max  ← A[1]
4.  A[1]  ←  A[ heap size	
‐ [A]]
5.  heap size	
‐ [A] ←  heap size	‐ [A]-1
6.  MAX HEAPIFY(A, 1)	
‐
7.  return  max
 Tahlil: MAX-HEAPIFY uchun doimiy vaqtni belgilash vaqti.
 HEAP-EXTRACT-MAX ning ishlash vaqti O(lgn).
Kalit qiymatini oshirish
 ORTISH-KEY   (S,   x,   k):   x   element   kalitining   qiymatini   k   ga
oshiradi.
k ≥ x ning joriy kalit qiymatini qabul qiling.
HEAP INCREASE KEY (A, 	
‐ ‐ i ,  key )
1.  if  key  < A[ i ]
2.  then error  “new key is smaller thean current key”
3.  A[ i ] ←  key
4.  While  i  > 1 and A[PARENT( i )] < A[ i ]
5.  do  exchange A[ i ] A[PARENT( i )]
6.  i  ← PARENT( i )
 Tahlil: tugundan ildizgacha yangilangan yo l	
ʻ
uzunligi O(lgn)ga ega. Ikkilik daraxtga kiritish
 INSERT(S, x): S to plamga x elementini kiritadi.ʻ
MAX HEAP INSERT(A)	
‐ ‐
1. heap size
‐ [A]← heap size	‐ [A]+1
2. A[ heap size	
‐ [A]←
3.  HEAP INCREASE KEY(A, 
‐ ‐ heap size	‐ [A],  key )
 Tahlil:   HEAP-INCREASE-KEY   uchun   doimiy   vaqtni   belgilash
vaqti.
 Ishlash vaqti O(lgn).
2.3 Heap-Sort algoritmini afzalliklari Samaradorlik.   Heap   tartiblash   algoritmi   juda   samarali.   Boshqa
saralash   algoritmlari   saralash   uchun   elementlar   soni   ortishi   bilan
eksponent   ravishda   sekin   o'sishi   mumkin   bo'lsa-da,   Massiv   tartiblash
uchun   talab   qilinadigan   vaqt   logarifmik   ravishda   ortadi.   Bu   shuni
ko'rsatadiki,   Massiv   tartiblash   ayniqsa   elementlarning   katta   ro'yxatini
saralash   uchun   mos   keladi.   Bundan   tashqari,   Heap   sortning   ishlashi
optimaldir.   Bu   shuni   anglatadiki,   boshqa   hech   qanday   tartiblash
algoritmlari taqqoslashda yaxshiroq ishlay olmaydi.
Xotiradan   foydalanish.   Uyda   tartiblash   algoritmi   joyida   tartiblash
algoritmi sifatida amalga oshirilishi mumkin.   Bu shuni anglatadiki, uning
xotirasidan   foydalanish   minimal,   chunki   saralanadigan   elementlarning
dastlabki   ro'yxatini   saqlash   uchun   zarur   bo'lgan   narsalardan   tashqari,
ishlash   uchun   qo'shimcha   xotira   maydoni   kerak   emas.   Bundan   farqli
o'laroq,   Birlashtirish   tartiblash   algoritmi   xotirada   ko'proq   joy   talab
qiladi.   Xuddi   shunday,   Tez   tartiblash   algoritmi   rekursiv   tabiati   tufayli
ko'proq stek maydoni talab qiladi.
Oddiylik .   Massiv   tartiblash   algoritmini   boshqa   teng   darajada
samarali   tartiblash   algoritmlariga   qaraganda   tushunish   osonroq.   U
rekursiya   kabi   ilg'or   informatika   tushunchalaridan   foydalanmaganligi
sababli, dasturchilar uchun to'g'ri amalga oshirish ham osonroq.
Muvofiqlik.   Massiv   tartiblash   algoritmi   barqaror   ishlashni
namoyish   etadi.   Bu   shuni   anglatadiki,   u   eng   yaxshi,   o'rtacha   va   eng
yomon   holatlarda   teng   darajada   yaxshi   ishlaydi.   Kafolatlangan   ishlashi
tufayli u javob berish vaqti muhim bo'lgan tizimlarda foydalanish uchun
ayniqsa mos keladi. 2.4 Heap-Sort algoritmini kamchiliklari
Heap-dan   foydalanishning   kamchiligi   shundaki,   Heap-da   ma'lumotlarni
saqlash   stekdan   foydalanishga   qaraganda   sekinroq.   Biroq,   massivdan
foydalanishning   asosiy   afzalligi   uning   moslashuvchanligidir.   Buning
sababi   shundaki,   ushbu   strukturadagi   xotira   har   qanday   aniq   tartibda
ajratilishi   va   olib   tashlanishi   mumkin.   Agar   algoritm   yaxshi   ishlab
chiqilgan   va   amalga   oshirilgan   bo'lsa,   massivdagi   sekinlik   qoplanishi
mumkin.  
Bu   beqaror   tur.   Barqaror   saralash   bir   xil   kalitga   ega   bo'lgan
elementlarning nisbiy tartibini saqlaydi.   ya'ni ular boshlang'ich massivda
mavjud   bo'lish   usuli.   Heapsort   beqaror   tartibdir.   Bu   nisbiy   tartibni
o'zgartirishi mumkin.
Qimmatbaho   doimiy   omillar.   Haqiqiy   hayotda   amalga   oshirishda
nazariy tahlil hisobga olinmaydigan doimiy omillar mavjud.   Heapsort va
Quicksort misolida, Quicksort-ning eng yomon holatlarini juda kamdan-
kam   hollarda   qilishning   yo'llari   (masalan,   mediana   5)   borligi   ma'lum
bo'ldi.   Oddiy   taqsimotga   ega   massivni   hisobga   olsak,   Quicksort   va
Heapsort   ikkalasida   ishlaydi   O(n   log(n)).   Ammo   Quicksort   tezroq
ishlaydi, chunki uning doimiy omillari Heapsort uchun doimiy omillardan
kichikroq.   Oddiy   qilib   aytadigan   bo'lsak,   bo'linish   yig'ilishni   saqlashdan
ko'ra tezroq.
Katta malumotlar  ikkilik daraxti. Agar sizning ma'lumotlar  ikkilik
daraxtingiz   haqiqatan   ham   katta   bo'lsa   va   xotiraga   mos   kelmasa,   unda
birlashma   tartiblash   joziba   kabi   ishlaydi.   U   tez-tez   ma'lumotlar   ikkilik
daraxti yuzlab mashinalarni qamrab oladigan klasterlarda qo'llaniladi.
Bularning   barchasini   muhokama   qilib,   aytishimiz   mumkinki,   bu
haqiqatan   ham   atrof-muhitga,   ma'lumotlarga   va   ma'lumotlarning   o'zi hajmiga   bog'liq   va   boshqa   omillar   biz   saralashdan   foydalanmoqchi
bo'lgan algoritmga ta'sir qiladi.  
2.5  Heap-Sort algoritmini C++ dasturlash tilida ifodalanishi
C++ da Heap Sort tartiblash algoritmi
MAX-MASSIVLASH(A,i)
    1- i<-chap[i]
    2- r<-right[i]
    3- if lA[i]
    4- keyin eng katta<-1
    5- boshqa eng katta<-i
    6- if rA[eng katta]
    7- keyin eng katta<-r
    8- eng katta bo'lsa!=i
    9- keyin A[i]<->A[eng katta] almashtiring
    10- MAX-HEAPIFY[A,eng katta]
HOP-SART(A)
    1- MAKS-MASSIV QURISH(A)
    2- i<-uzunligi[A] uchun 2 gacha
    3- A[1]<-> massiv o'lchami[A]-1 almashtiring
    4- massiv o'lchami[A]<-massiv o'lchami[A]-1
    5- MAKS-YUMLASH(A,1)
MAKS-MASSIV (A) QURISH
    1- to p o lchami[A]<-uzunlik[A]ʻ ʻ
    2- i<-(uzunlik[A]/2) uchun 1 tagacha
    3- MAX-MASSIVLASH(A,i) #include <iostream>
using namespace std;
void heapify(int arr[], int n, int i)
{
    int largest = i;
    int l = 2*i + 1;
    int r = 2*i + 2;
    //Agar chap uch ildizdan katta bo'lsa
    if (l < n && arr[l] > arr[largest])
        largest = l;
     //Agar o'ng uch eng katta bo'lsa  
    if (r < n && arr[r] > arr[largest])
        largest = r;
    // Agar ildiz eng katta bo'lmasa
    if (largest != i)
    {
        swap(arr[i], arr[largest]);
        //Subdaraxtni rekursiv yig'ish
        heapify(arr, n, largest);
    }
}
void heapSort(int arr[], int n)
{
    for (int i = n / 2 - 1; i >= 0; i--)
        heapify(arr, n, i);
    //Massivdan elementni birma-bir ajratib oling
    for (int i=n-1; i>=0; i--)
    {
        //Joriy ildizni oxirigacha ko'chirish         swap(arr[0], arr[i]);
        //Kamaytirilgan ikkilik daraxtda max heapify chaqirilmoqda
        heapify(arr, i, 0);
    }
}
//Masivni chop etish funksiyasi
void display(int arr[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << "\t";
    }
    cout << "\n";
}
int main()
{
    int arr[] = {1, 14, 3, 7, 0};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "Saralanmagan massiv  \n";
    display(arr, n);
    heapSort(arr, n);
    cout << "Saralangan massiv  \n";
    display(arr, n);
}
Chiqarish:
Saralanmagan massiv  
1 14 3 7 0
Saralangan massiv   0 1 3 7 14
Vaqtning murakkabligi
C++ da massiv tartiblash uchun
Eng yaxshi
O(nlog n)
O'rtacha
O(nlog n)
Eng yomoni
O(nlog n).
2.6 Heap-Sort algoritmini Python dasturlash tilida ifodalanishi
Massiv tartiblash uchun Python dasturi
• Qiyinchilik darajasi : O'rta
Heapsort   -   bu   ikkilik   massiv   ma'lumotlar   tuzilishiga   asoslangan
taqqoslashga   asoslangan   saralash   usuli.   Bu   birinchi   navbatda   maksimal
elementni topib, maksimal elementni oxiriga qo'yadigan tanlash tartibiga
o'xshaydi. Qolgan element uchun xuddi shu jarayonni takrorlaymiz.
# Saralash ikkilik daraxtini amalga oshirish uchun Python dasturi
# i indeksida joylashgan pastki daraxtni yig'ish uchun.
# n - massiv hajmi
def heapify(arr, n, i):
       largest = i # Eng kattani ildiz sifatida ishga tushirish
       l = 2 * i + 1 # chap = 2 * i + 1
       r = 2 * i + 2 # o'ng = 2 * i + 2
# Ildizning chap ildiz tuguni mavjudligini va mavjudligini tekshiring
       # ildizdan katta
       if l < n and arr[i] < arr[l]:
               largest = l
# Ildizning to'g'ri ildiz tuguni mavjudligini va mavjudligini tekshiring
       # ildizdan katta        if r < n and arr[largest] < arr[r]:
               largest = r
# Agar kerak bo'lsa, ildizni o'zgartiring
       if largest != i:
               arr[i],arr[largest] = arr[largest],arr[i] # almashtirish
   # Ildizni massivlang.
               heapify(arr, n, largest)
# Berilgan o lchamdagi massivni saralash uchun asosiy funksiyaʻ
def heapSort(arr):
       n = len (arr)
   # Maxheap quring.
        #   Oxirgi   ildiz-ona   ((n//2)-1)   bo'lgani   uchun   biz   o'sha   joydan
boshlashimiz mumkin.
       for i in range(n // 2 - 1, -1, -1):
               heapify (arr, n, i)
# Elementlarni birma-bir ajratib oling
       for i in range(n-1, 0, -1):
               arr[i], arr[0] = arr[0], arr[i] # ta almashtirish
               heapify (arr, i, 0)
# Yuqoridagi sinov uchun haydovchi kodi
arr = [ 12, 11, 19, 5, 6, 7]
heapSort(arr)
n = len (arr)
print("Tartiblangan massiv")
for i in range(n):
       print("%d" %arr[i]),
# Ushbu kod Mohit Kumra tomonidan kiritilgan
Chiqish:
Tartiblangan massiv 5 6 7 11 12 1 Xulosa
Ushbu   kurs   ishida   asosiy   mavzu   sifatida  Heap   Sort   algoritmi   yoritilgan.
Dastavval     algoritm   tushunchasi   uning   paydo   bo’lishi   haqida   malumot
berilgan   va   yana   graflar   ikkilik   daraxtlar   haqida   ham   malumotlar
keltirilgan.   Keyin   esa   asosiy   mavzu   sifatida   Heap   Sort   algoritmi   haqida
to’liq   malumotlar   keltirilgan   qachon   paydo   bo’lgan   ,   kim   tomonidan
kashf   etilgan   ,   algoritmning   afzalliklari   ,   kamchiliklari   va   yana
algoritmning dasturlash tillarida qanday tuzilishi ko’rsatib natijalari bilan
berilgan. 
Heapsort algoritmini ikki qismga bo'lish mumkin.
Birinchi   bosqichda   ma'lumotlardan   ikkilik   daraxt   quriladi.   Massiv
ko'pincha   to'liq   ikkilik   daraxtning   joylashuvi   bilan   massivga
joylashtiriladi.   To'liq   binar   daraxt   ikkilik   daraxt   strukturasini   massiv
indekslari   bilan   taqqoslaydi;   har   bir   massiv   indeksi   tugunni
ifodalaydi;   tugunning ildizi, chap pastki uchi yoki o'ng pastki uchi indeksi
oddiy ifodalardir.
Ikkinchi   bosqichda   eng   katta   elementni   (daraxtning   ildizi)   qayta-
qayta   olib   tashlash   va   uni   massivga   kiritish   orqali   tartiblangan   massiv
yaratiladi.   Massiv   xususiyatini   saqlab   qolish   uchun   har   bir   olib
tashlashdan  so'ng   massiv   yangilanadi.   Barcha  ob'ektlar  ikkilik  daraxtdan
olib tashlangandan so'ng, natija tartiblangan massiv bo'ladi.
         Ushbu kurs ishi 48 listdan iborat bo’lib uch bobga bo’lib yoritilgan
(Algoritmlar,   Graflar   va   darahtlar,   Heap   Sort   algoritmi)   bo’lib   unda
xulosa va foydalanilgan adabiyotlar qismi mavjud.  Foydalanilgan adabiyotlar
1. M.O‘.   ASHUROV,   SH.A.SATTAROVA,
SH.U.USMONQULOV,     “ALGORITMLAR”   ,     «Fan   va
texnologiya» nashriyoti, 2018.
2. H.To’rayev,“Kombinatorika   va   graflar   nazariyasi”,   “Ilm   ziyo”,
2009 ,
3. Akbaraliyev   B.B.,   Yusupova   Z.Dj.   ,   “MA LUMOTLAR‟
TUZILMASI VA ALGORITMLAR”, Toshkent 2013
4. Toirov   Sh.A.,   Raximov   R.T.,   Karimov   M.M   ,”
“ALGORITMGA   KIRISH”   fanidan   laboratoriya   ishlarini
bajarish bo’yicha USLUBIY KO’RSATMA”, Samarqand 2015.
5. Avnindra Kanaujia “Heap Sort Algorithms: Full Explanation of
Heap Sort Algorithm” November 17, 2017.
Foydalanilgan Internet saytlar
1. www.codingeek.com
2. www.geeksforgeeks.org
3. www.wikipedia.org
4. www.programiz.com
5. www.tutorialspoint.com
6. www.educba.com
7. www.btechsmartclass.com
8. www.commonlounge.com
9. www.brilliant.org
10. www.medium.com
11. www.researchgate.net
12. www.upgrad.com
13. www.quora.com

Mundarija Kirish: ...................................................................................................................................................... 2 Raqamli texnologiyalarning zamonaviy dunyosida dasturlash turli xil kompyuterlar, gadjetlar va boshqa elektron qurilmalarning ishlashi uchun asos bo'lib xizmat qiladi. Va algoritmning blok diagrammasini tez va to'g'ri tarzda tuzish qobiliyati bu fanning asosidir. Bunday sxema asboblar tomonidan bajarilishi kerak bo'lgan jarayonlarning grafik modeli. Turli funktsiyalarni bajaradigan alohida funktsiya bloklaridan iborat. Algoritm – maʼlum bir turga oid masalalarni yechishda ishlatiladigan amallarning muayyan tartibda bajarilishi haqidagi aniq qoida (dastur). Kibernetika va matematikaning asosiy tushunchalaridan biri. Oʻrta asrlarda oʻnli sanoq tizimi boʻyicha toʻrt arifmetik amal bajariladigan qoidani   Algaritm   deb atashgan. "Bu qoidalarni matematikaga 9- asrda   al-Xorazmiy   tomonidan kiritilgan. Yevropada bunday qoidalar uning tug'ilgan yurtiga nisbatan lotinchalashtirilgan (Algoritmus yoki Algorithmus shaklida "algorizm" deyilgan), keyinchalik "algoritm"ga aylangan" (akademik A. N. Kolmogorov). Fanga "Yevklid algoritmi", "Gʻiyosiddin Koshiy algoritmi", "Laure algoritmi", "Markov algoritmi" deb ataluvchi algoritmlar maʼlum. Algoritm tushunchasi tobora kengayib borib, kibernetikaning nazariy va mantiqiy asosi hisoblangan algoritmlar nazariyasi paydo boʻldi. Oʻzbekiston Respublikasida bir necha ilmiy tadqiqot muassasalari va hisoblash markazlarida Algoritmdan foydalanish sohasida samarali ishlar olib borilmoqda. Masalan Oʻzbekiston Fanlar akademiyasi "Kibernetika" ilmiy ishlab chiqarish birlashmasida, Oʻzbekistondagi barcha universitetlarda, Toshkent davlat texnika universitetida, Oʻzbekiston Respublikasi Makroiqtisod va statistika vazirligi qoshidagi Hisoblash markazi va boshqa muassasalarda olib borilayo’tgan ishlar bunga misol boʻla oladi. ......................................................... 2 I-BOB. Algoritmlar, Graflar va Daraxtlar tushunchasi ............................................................................ 4 1.1 Algoritmni tasvirlash usullari. .......................................................................................................... 4 1.2.Algoritmning asosiy xossalari. .......................................................................................................... 5 1.3 Graflar nazariyasi va uning paydo bo’lishi ....................................................................................... 6 1.4 Daraxtlar haqida tushuncha ............................................................................................................. 8 1.5.Binar daraxtlar .................................................................................................................................. 9 II-BOB. Heap-Sort Algoritmi ................................................................................................................. 10 2.1.Heap-Sort algoritmining yaratilish tarixi ........................................................................................ 10 2.2.Heap-Sort algoritmini tuzilishi ....................................................................................................... 11 2.3 Heap-Sort algoritmini afzalliklari ................................................................................................... 34 2.4 Heap-Sort algoritmini kamchiliklari ............................................................................................... 36 2.5 Heap-Sort algoritmini C++ dasturlash tilida ifodalanishi ............................................................... 37 2.6 Heap-Sort algoritmini Python dasturlash tilida ifodalanishi .......................................................... 40 Xulosa ................................................................................................................................................... 42 Ushbu kurs ishida asosiy mavzu sifatida Heap Sort algoritmi yoritilgan. Dastavval algoritm tushunchasi uning paydo bo’lishi haqida malumot berilgan va yana graflar ikkilik daraxtlar haqida ham malumotlar keltirilgan. Keyin esa asosiy mavzu sifatida Heap Sort algoritmi haqida to’liq malumotlar keltirilgan qachon paydo bo’lgan , kim tomonidan kashf etilgan , algoritmning afzalliklari , kamchiliklari va yana algoritmning dasturlash tillarida qanday tuzilishi ko’rsatib natijalari bilan berilgan. ...................................................................................................................................... 42 Ushbu kurs ishi 48 listdan iborat bo’lib uch bobga bo’lib yoritilgan (Algoritmlar, Graflar va darahtlar, Heap Sort algoritmi) bo’lib unda xulosa va foydalanilgan adabiyotlar qismi mavjud. ........................ 42 Foydalanilgan adabiyotlar .................................................................................................................... 44 Foydalanilgan Internet saytlar ............................................................................................................. 44

Kirish : Raqamli texnologiyalarning zamonaviy dunyosida dasturlash turli xil kompyuterlar, gadjetlar va boshqa elektron qurilmalarning ishlashi uchun asos bo'lib xizmat qiladi. Va algoritmning blok diagrammasini tez va to'g'ri tarzda tuzish qobiliyati bu fanning asosidir. Bunday sxema asboblar tomonidan bajarilishi kerak bo'lgan jarayonlarning grafik modeli. Turli funktsiyalarni bajaradigan alohida funktsiya bloklaridan iborat. Algoritm – ma lum bir turga oid masalalarni yechishdaʼ ishlatiladigan amallarning muayyan tartibda bajarilishi haqidagi aniq qoida (dastur). Kibernetika va matematikaning asosiy tushunchalaridan biri. O rta asrlarda o nli sanoq tizimi bo yicha to rt arifmetik amal ʻ ʻ ʻ ʻ bajariladigan qoidani Algaritm deb atashgan. "Bu qoidalarni matematikaga 9-asrda al-Xorazmiy tomonidan kiritilgan. Yevropada bunday qoidalar uning tug'ilgan yurtiga nisbatan lotinchalashtirilgan (Algoritmus yoki Algorithmus shaklida "algorizm" deyilgan), keyinchalik "algoritm"ga aylangan" (akademik A. N. Kolmogorov). Fanga "Yevklid algoritmi", "G iyosiddin Koshiy algoritmi", "Laure algoritmi", "Markov ʻ algoritmi" deb ataluvchi algoritmlar ma lum. Algoritm tushunchasi ʼ tobora kengayib borib, kibernetikaning nazariy va mantiqiy asosi hisoblangan algoritmlar nazariyasi paydo bo ldi. O zbekiston ʻ ʻ Respublikasida bir necha ilmiy tadqiqot muassasalari va hisoblash markazlarida Algoritmdan foydalanish sohasida samarali ishlar olib borilmoqda. Masalan O zbekiston Fanlar akademiyasi "Kibernetika" ʻ ilmiy ishlab chiqarish birlashmasida, O zbekistondagi barcha ʻ universitetlarda, Toshkent davlat texnika universitetida, O zbekiston ʻ Respublikasi Makroiqtisod va statistika vazirligi qoshidagi Hisoblash markazi va boshqa muassasalarda olib borilayo’tgan ishlar bunga misol bo la oladi. ʻ

I-BOB. Algoritmlar, Graflar va Daraxtlar tushunchasi 1.1 Algoritmni tasvirlash usullari. Biror masalani kompyuterda yechish uchun, avval uning matematik modelini, keyin esa yechish algoritmi va dasturini tuzish kerak bo‘ladi. Ushbu uchlikda algoritm bloki muhim ahamiyatga ega. Endi algoritm tushunchasining ta’rifi va xossalarini bayon qilamiz. Masala yechimini cheklangan qadamlar natijasida hosil qiladigan, oldindan tayinlangan va aniq belgilangan qoidalar yoki buyruqlar ketma-ketligi algoritm deyiladi. Soddaroq qilib aytganda, algoritm bu - oldimizga qo‘yilgan masalani yechish uchun zarur bo‘lgan amallar ketma-ketligidir. Algoritm tuzish - bu dasturlashdir, algoritmni tuzuvchilar esa dasturchilardir. Algoritmlarning eng ko‘p uchraydigan turlari bilan tanishamiz. Algoritmning so‘zlar orqali ifodalanishi. Bu usulda ijrochi uchun beriladigan har bir ko‘rsatma jumlalar, so‘zlar orqali buyruq shaklida beriladi. Algoritmning formulalar bilan ifodalanish usulidan matematika, fizika, kimyo kabi aniq fanlardagi formulalarni o‘rganishda foydalaniladi. Bu usul ba’zan analitik ifodalash deyiladi. Algoritmlarning maxsus geometrik shakllar yordamida ifodalanishida masala yechish jarayoni aniq va ravon tasvirlanadi va bu ko‘rinish blok-sxema deyiladi. Algoritmning jadval ko‘rinishda berilishi . Algoritmning bunday ifodasidan ham ko‘p foydalanamiz. Masalan, maktabda qo‘llanib kelinayo’tgan to‘rt xonali matematik jadvallar yoki turli xil lotereyalar jadvali. Funksiyalarning grafiklarini chizishda ham algoritmlarning qiymatlari jadvali ko‘rinishlaridan foydalanamiz. Bu kabi jadvallardan foydalanish algoritmlari sodda bo‘lgani tufayli ularni o‘zlashtirib olish oson. Yuqorida ko‘rilgan algoritmlarni tasvirlash usullarining asosiy maqsadi, qo‘yilgan masalani yechish uchun zarur bo‘lgan amallar ketma-

ketligining eng qulay holatini aniqlash va shu bilan inson tomonidan dastur yozishni yanada osonlashtirishdan iborat. Aslida, dastur ham algoritmning boshqa bir ko‘rinishi bo‘lib, u insonning kompyuter bilan muloqotini qulayroq amalga oshirish uchun mo‘ljallangan. 1.2.Algoritmning asosiy xossalari. Algoritmning 5 ta asosiy xossasi bor. 1. Diskretlilik (Cheklilik). Bu xossaning mazmuni algoritmlarni doimo chekli qadamlardan iborat qilib bo‘laklash imkoniyati mavjudligida. Ya’ni uni chekli sondagi oddiy ko‘rsatmalar ketma-ketligi shaklida ifodalash mumkin. Agar kuzatilayo’tgan jarayonni chekli qadamlardan iborat qilib qo‘llay olmasak, uni algoritm deb bo‘lmaydi. 2.Tushunarlilik. Biz kundalik hayotimizda berilgan algoritmlar bilan ishlayo’tgan elektron soatlar , mashinalar, dastgohlar, kompyuterlar, turli avtomatik va mexanik qurilmalarni kuzatamiz. Ijrochiga tavsiya etilayo’tgan ko‘rsatmalar uning uchun tushinarli mazmunda bo‘lishi shart, aks holda, ijrochi oddiygina amalni ham bajara olmaydi. Bundan tashqari, ijrochi har qanday amalni bajara olmasligi ham mumkin.Har bir ijrochining bajarishi mumkin bo‘lgan ko‘rsatmalar yoki buyruqlar majmuasi mavjud, u ijrochining ko‘rsatmalar tizimi (sistemasi) deyiladi. Demak, ijrochi uchun berilayo’tgan har bir ko‘rsatma ijrochining ko‘rsatmalar tizimiga mansub bo‘lishi lozim. Ko‘rsatmalarni ijrochining ko‘rsatmalar tizimiga tegishli bo‘ladigan qilib ifodalay olishimiz muhim ahamiyatga ega. Masalan, quyi sinfning a’lochi o‘quvchisi "son kvadratga oshirilsin" degan ko‘rsatmani tushunmasligi natijasida bajara olmaydi, lekin "son o‘zini o‘ziga ko‘paytirilsin" shaklidagi ko‘rsatmani bemalol bajaradi , chunki u ko‘rsatma mazmunidan ko‘paytirish amalini bajarish kerakligini anglaydi. 3. Aniqlik . Ijrochiga berilayo’tgan ko‘rsatmalar aniq va mazmunli bo‘lishi zarur. Chunki ko‘rsatmadagi noaniqliklar mo‘ljaldagi