Tekshirdi: Bo’riev Yusuf Toshkent 2022 Tezkor saralash (Quick sort) algoritmi Ishdan maqsad



Download 105,93 Kb.
bet1/2
Sana29.11.2022
Hajmi105,93 Kb.
#874920
  1   2
Bog'liq
DSA3



Muhammad Al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti

Ma’lumotlar tuzilmasi va algoritmlar
3-amaliy ishi
Bajardi: SWD002-2 guruhining talabasi
Qilichbayev Sirojiddin


Tekshirdi: Bo’riev Yusuf

Toshkent 2022


Tezkor saralash (Quick sort) algoritmi
Ishdan maqsad: Quick sort algoritmini to’liq o’rganib chiqish va C++ dasturlash tilida amaliy masalalar yechib ko’rish.
Nazariy ma’lumotlar
Merge sort singari, Quick sort ham divide va conquer algoritmidir. U elementni pivot sifatida tanlaydi va berilgan massivni tanlangan pivot atrofida ajratadi. QuickSort-ning turli xil yo'llar bilan pivotni tanlaydigan ko'plab turli versiyalari mavjud:

  • Har doim birinchi elementni pivot sifatida tanlang.

  • Har doim oxirgi elementni pivot sifatida tanlang (quyida amalga oshiriladi)

  • Pivot sifatida tasodifiy elementni tanlang.

  • Pivot sifatida medianni tanlang.

QuickSort-dagi asosiy jarayon - bu partition() (bo’lak) funksiyasi. Bo’limlarning maqsadi - massiv va massivning x elementi pivot sifatida berilgan, x ni tartiblangan massivda o'zining to'g'ri joyiga qo'yish va barcha kichikroq (x dan kichik) elementlarni x dan oldin qo'yish va barcha katta (x dan kattaroq) elementlarni qo'yishdir x dan keyin. Bularning barchasi chiziqli vaqtda amalga oshirilishi kerak.
Partition algoritmi
Bunda massiv elementlarini 0 – dan oxirgi indeksgacha aylanib chiqamiz. Agar elementimiz pivot dan kichik bo’lsa uni dastlabki elementlar bilan almashtirib chiqamiz. Ya’ni masalan, 0, 1 – elementlarimiz pivotdan katta va 2-elementimiz pivotdan kichik bo’lib qolsa, uni 0-indeksdagi element bilan almashtiramiz, keying pivotdan kichig elementimiz 5-indeksda bo’lsa, endi uni 2-indeksdagi element bilan almashtiramiz… Bu funksiyamiz rekursiv bo’lgani uchun unga massiv, chap va o’ng indekslarini berib yuboramiz. Shuningdek siklimiz aylanib bo’lgandan keyin oxirgi elementimiz bilan navbati kelib qolgan indeksdagi element bilan almashtiramiz.

int partition(int a[], int l, int r){
int pivot = a[r];
int i = l - 1;
for (int j = l; j < r; j++) {
if (a[j] <= pivot){
i++;
my_swap(&a[i], &a[j]);
}
}
my_swap(&a[i+1], &a[r]);
return i+1;
}

Agar partition funksiyasini C++ dasturlash tilida quyidagicha yozishimiz mumkin:
Shu bilan yordamichi partition() funksiyamiz tugaydi va asosiy sortlash funksiyamizni yozsak bo’ladi.

Download 105,93 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish