logo

Saralash algoritmlanini vizuallashtirish

Загружено в:

08.08.2023

Скачано:

0

Размер:

289.0439453125 KB
Mavzu: Saralash algoritmlanini vizuallashtirish 
I. Kirish
Saralash haqida ma’lumot va ularning qo’llanilishi.
II.Asosiy qism
Nazariy qism
1. Saralash xossalari va ularning sinflari
 
2. Saralash algoritmlari bajarilish tezligida xotirani effektiv ishlatilishi bo’yicha 
baholash. 
3. Ichki va tashqi saralash. 
Amaliy qism 
1.Saralash bo’yicha algaritmlar. 
2. Saralashga oid misollar. 
3.Sanash orqali saralash. 
4.Razryadli saralash(Raqamli saralash). 
III.Xulosa:  
Saralashning axamiyati. 
IV. Foydalangan adabiyotlar ro’yxati. Kirish:
  Saralashdan biz kundalik hayotmizda ko’p foydalanamiz. Masalan bozordan 
biror narsa harid qilishimizda, uning ko’piroq narxi bilan qiziqamiz yoki ularni
taqqoslaymiz. Bu narsalar bizga oddiy hodisa bo’lib qolgan, lekin biz siz bilan bu
jarayon qanaqa miyamizda xosil bo’layotganligini bir o’ylab ko’raylikchi. Demak,
 oddiygina biz kunda faydalnayotgan xarakatlarimizni dasturini tuzish uchun ko’p
narsalarni bilishimiz va aniq bir maqsadga yo’naltirgan tartiblangan qoidalar
yig’indisi zarur bo’ladi. Agar ma’lumotlar kompyuter xotirasida muayyan tartibda
saqlanadigan bo’lsa, axborotga ishlov berish va uni izlash bilan bog’liq ko’p
masalalar oddiyroq, tezroq va samaraliroq xal qilinadi. Bir qator xollarda
ma’lumotlarning tartibga solinganligidan foyda aniq bo’lib, maxsus isbotlashlarni
talab etmaydi. Agar lug’at yoki telefon ma’lumotnomasida so’zlar va familalar
alifbo tartibida joylashtirilmaganda ulardan foydalanish qanchalik qiyin bo’lishini
tasavvur etish mumkin. Lekin ma’lumotlarni saralash zaruriyati masalasi har safar
muayyan vazifasiga nisbatan hal qilishi zarur. Bunda tashqi xotira qurulmalari
imkoniyatlari, opetativ xotira xajmi, ma’lumotlarga murojaat qilish tezligi, ularni
yangilab turish tezligi va ishlov berish xarekteri kabilarni taxlil qilish zarur.
Turli ilovalarda tartibga solishning turli mezonlaridan
foydalaniladi. Ma’lumotlarularga murojat qilish e’htimolining qiymati, qancha
tez-tez murojat etib turishiga ko’ra tartibga solishi mumkin. Odatda, tartibga
solish yozuv bo’yicha amalga oshiriladi.
Axbotot tizimlari bilan ishlov beriladigan ma’lumotlar birligi bir qator 
axborot maydonidan iborat bo’lgan yozuv hisoblanadi. Yozuv faqat bittagina 
maydondan iborat bo’lishi mumkin va bu xolda u kalitli hisoblanadi. Tartibga 
solish natiyjasida yozuvlar kalitlarning qiymati ortib borishi yoki kamayib borish
tartibida joylashadi. Bunday tartibga solish jarayoni saralash deb ataladi. Masalan, 
fakultet talabalari to’g’risidagi ma’lumotlardan iborat bo’lgan yozuvlar talabalarning reyting daftarchalari nomerlari bo’yicha tartibga solingan bo’lishi
mumkin.
Yozuvlar dastlabki ketma-ketligi turli darajada tartibga solingan bo’lishi 
mumkin. Balki yozuv elementlari belgilangan tartibda joylashgan bo’lishi mumkin.
Boshqa bir xolatda elementlarga teskari, ya’ni yozuvlarning dastlabki ketma - 
ketligi teskari tartibda joylashgan bo’lishi mumkin. Yozuvlarning dastlabki ketma-
ketligining qanday tartibda joylashganlik darajasiga ko’ra, solishtirishlar va joyini 
o’zgartirishlarning u yoki bu soni talab etiladi.
Saralash usulini boxolashda solishtirishlar va o’rnini o’zgartirishlarning eng 
ko’p va kam sonlarini topish juda onson. Bu operatsiyalarning o’rtacha sonini
aniqlash uchun kombinatorikaning tegishli bo’limlarini jalb etish zarur.
Odatda, saralash jarayonida bajariladigan solishtirish operatsiyalarining 
o’rtacha soni va elementlarining o’rnini almashtirish yoki o’zgartirishning
o’rtacha soni turli usullarni baxolash mezonlari xisoblanadi. Saralash
samaradorligi solishtirishning o’rtacha soniga bo’linmasi sifatida aniqlanadi.
EXM larning operatsiyon tizimlari, xech bo’lmaganda, bitta dastur – saralash
utilitasidan iborat bo’ladi. Lekin ma’lumotlarga ishlov berishning muayyan
vazifalarini xal qilishda utilita taklif etilayotgan usil yaroqsiz bo’lishi va boshqa
usilni ishlab chiqish yoki foydalanishga to’g’ri kelishi mumkin. Shu munasabat
bilan saralashning asosiy usillarini bilish va muayyan vazifa uchun yaroqli
bo’lgan u yoki bu usilni baxolay olish muximdir. II.Asosiy qism
Saralash – bu massiv elementlarini biror qonuniyat (o’sish, kamayish, oxirgi
raqami, bo’luvchilar, juftlari toqlari …)ga asoslangan holda tartiblashga aytiladi.
Umuman olganda saralashning maqsadi berilgan ob’ektlar to’plamini
aniq bir tartibda guruxlab chiqish jarayoni tushuniladi.
Saralashning maqsadi keyinchalik, saralashgan to’plamni qidirilayotgan 
elementini topishdani borat. Bu qariyib universal, fundamental jarayon. Biz bu 
jarayon bilan har kuni uchrashamiz – telefon daftaridagi saralash, kitoblar 
sarlavhasida, kutubxonalarda, lug’atlarda, pochtada savdoda va x.k.
Xar qanday saralash bu dastur demakdir va saralash presedurasining
tavsivlarining baxosi dastur qanchalik yaxshi tuzilganiga bog’liq bo’ladi.Ikkita
turli usillarning ish unimidagi farq “ yaxshi ” va “ yoman ” dasturlashtirilgan
aynan bitta usil o’rtasidagilarga nisbatan bir necha kam bo’lishi mumkin. 
Saralash presedurasi uchun sarflanadigan xaqiqiy mashina vaqti massivlardan
ko’rib chiqish, qiyoslash va sikllarni tashkil etish, ma’lumotlarni boshqa joyga
ko’chirish kichik dasturlari, kichik dasturlarning aloqasi uchun bog’liq bo’ladi.
Bugun biz siz bilan massiv elementlarini saralashni ko’rib chiqamiz. 
Saralashning juda ko’pusullari mavjud. Ular turli to’plamlar uchun turlicha bo’lishi
mumkin.
Massivni saralash uchun ishlatiladigan usul unga berilgan xotirani ixcham 
holda ishlatish lozim. Boshqacha qilib aytganda, saralanayotgan massiv xuddi shu
massivni o’zida amalga oshirilishi lozim.
Saralash usullari kam mashina vaqtini talab qilishi lozim. Eng yaxshi tez 
algoritmlar tartibidagi saralashlarni talab etadi. n*log n
Bu yerda ikkita saralashni farqlash lozim.
Ichki va tashqi saralash.
Ichki saralash deganda, massivlarni saralashni,
Tashqi saralash deganda esa, fayl elementlarini saralashni tushunamiz.
Algoritmning asosiy xossalaridan biri unga qo’llanish sferasi(sohasi) bilan 
bog'liq.
Asosan ikkita tur saralashi mavjud:
•Ichki saralash. Boshqacha qilib aytganda, bunday saralash massivlarda              
saralashni amalga oshiradi. Bunda keltirilgan n ketma – ketlik operativ xotirada 
joylashga va bunda ixtiyoriy yacheykaga raxsatli kirish mavjud. Asosan bu yerda 
o‘z joyida saralash amalga oshiriladi.
• Tashqi saralash. Bu yerda fayllar ustida saralash  a malga oshiriladi. Albatta, 
bunday saralashda vaqt ko‘p ketadi, lekin, o’lcham jixattan katta ketma-ketliklarni 
saralash mumkin.
Faraz qilaylik, bizgaα	
1	
,	α	
2	
,	.	.	.	,	α	
n
elementlar berilgan bo’lsin, u holda massivni saralash deganda, uni elementlarini 
o’rinlariga almashtirish tushuniladi.	
α	
k	
1	
,	α	
k
2	
,	.	.	.	,	α	
k	
n Bu yerda, quyidagi tartiblashtirilgan funksiy abajariladi.f	(α	k1)	≤	f	(α	k2)¿	.	.	.	≤	f	(α	kn)
Saralash algoritmlari bajarilish tezligida xotirani effektiv ishlatilishi bo’yicha 
baholash.
Vaqt – bu algoritmni tezligini xarakterlovchi asosiy parametr. Bu albatta 
hisoblash murakkabligi bilan bog’liq.
Algoritmning uchta asosiy xulqi  ya’ni o’zini tutishi
 yomon
 o'rta
 yaxshi
bo’lishi mumkin.
O(n log n) – baho algoritmni  o’rta  xulqi hisoblanadi.
O(n2)  – baho algoritmni  yomon  xulqini aks ettiradi.
O(n) – baho algoritmni  yaxshi  xulqini aks ettiradi.
Bu yerda  n  saralanadigan elementlar soni bo’lib, u avvaldan berilgan 
bo’lishi kerak.
Xotira – ba’zi bir algoritmlar saralashda qo’shimcha xotira talab etiladi. 
Odatda bunday algoritmlar O(log n) xotirani talab etiladi. Ba’zi birlari saralashda 
qo’shimcha xotira talab etmaydi. Bunday algoritmlar  o’z o’rnida  (joyida) saralash 
deb ataladi.
Saralash jarayonida dastlabki massivning bir qismi operativ xotirada 
o’qiladi. U yerd ichki saralash usillaridan biri bilan saralanadi. So’ngra tashqi 
xotira qurilmasiga yozib olinadi. Bu jarayon bir necha bor takrorlanadi. Shu tariqa saralangan yozuvlar ketma-ketligi keyinchalik birlashtiriladi. Tashqi xotira
qurilmasidagi tartibga solingan ma’lumotlar ketma-ketligini birlashtirish
operatsiyasi qo’shilish deb ataladi. 
Saralash xossalari va ularning sinflari
Turg'unlilik (stability)
Tabiiy xulqlilik – algoritm o’zini tabiiy holdagidek tutadi. Agar kiritiladigan
ketma – ketlikdagi bu xarakteristikani xisobga olsa va yaxshi ishlasa u tabiiy xulqli
deyiladi. 
Turg'un saralash algoritmlari.
1. Tanlashni saralash (Selection sort) – algoritm murakkabligi O(n 2 )
2.  Ko’pikli saralash (Bubble sort) – algoritm murakkabligi O(n 2 ).
3.  Aralashtirish saralashi (SHeyker, Cocktail sort, bidirectional bubble sort) -
algoritm murakkabligi O(n2)
4.  O’rniga qo’yish saralashi (Insertion sort) – algoritm murakkabligi O(n 2 )
5.  Qo’shilish saralashi (Merge sort) – algoritm murakkabligi O(n logn)
6.  Ikkilik daraxti yordamida saralash (Tree sort) – algoritm murakkabligi               
O(n log n) qo’shimcha O(n) xotira talab etadi.
7.  Timsort saralashi (Timsort) – algoritm murakkabligi O(n log n) qo’shimcha
O(n) xotira talab etadi.
8.  Sanash orqali saralash (Counting sort) – algoritm murakkabligi O(n+k)
qo’shimcha O(n) xotiratalabetadi.
9. Blokli saralash (Savatli saralash, Bucket sort) – algoritm murakkabligi O(n)
qo’shimcha O(k) xotira talab etadi. Turg'unmas saralash algoritmlari.
1.Tanlash orqali saralash(Selection sort) algoritm murakkabligi O(n 2 )
2. Shell saralash (Shell sort) algoritm murakkabligi O(n log 2 n).
3. Tarash orqali saralash (Comb sort) algoritm murakkabligi O(nlogn)
4. Suzuvchi saralash (Smooth sort) algoritm murakkabligi O(n logn)
5. Tez saralash (Quick sort) algoritm murakkabligi O(nlogn)
6. Intro sort – algoritm murakkabligi O(nlogn)
7. Patience sorting – algoritm murakkabligi O(nlogn)
8. Stooge sort – algoritm murakkabligi O(n 2.71 )
9. Razryadli saralash. Algoritm murakkabligi O(n+k). O(k)qo'shimcha xotira
talab etiladi.
Amaliy bo'lmagan saralash
1. Bogosort – algoritm murakkabligi O(n n!).
2. O’rinlashtirish saralash – algoritm murakkabligi O(n n!).
3. Ma’nosiz saralash (Stupid sort) – algoritm murakkabligi O(n 3 ).
4. Bead asort – Algoritm murakkabligi O(n) yoki O(sqrt(n)). Maxsus apparat 
ta’minoti talab etiladi.
5. Quymoqli saralash (Pancake sorting) – Algoritm murakkabligi O(n).Maxsus
apparat ta’minoti talab etiladi.
Ko’rib turubsiz saralash algaritimlari juda ko’p turlari mavjud. Shulardan 
ba’zi birlari bilan tanishib chiqamiz.
Algoritmlar: • Oddiy va tushunarli, lekin katta massivlar uchun, samarali emas
 Pufakcha usuli
 Tanlash usuli
Algarirm murakkabligi O( N2 )
• Qiyin, lekin samarali usullar
 «tez saralash» ( Quick Sort )
 «to’p-to’p» saralash ( Heap Sort )
 Qo’shilib saralash
 Piramidali saralash
Algarirm murakkabligi O( N*logN )
PUFAKCHA USUL (Bubble sort)
G’oya – stakandagi suvning pufakchalari kun bo’yi tepaga ko’tariladi.
Massiv uchun – eng kichik («engil») element tepada joylashadi («suv yuziga
ko’tariladi»).
• Pastdan boshlab ikkita qo„shni elementni solishtiramiz; agarda ular 
«noto’g’ri» turgan bo’lsa, ularni o’rnini almashtiramiz
• Birinchi o’tishda bitta element (eng kichik) o’z joyiga o’tadi
• N ta elementli massivni saralash uchun N-1 o’tishni bajarish lozim (N-1
elementni o’z joyiga qo’yish uchun yetarli).
Xar bir o’tishdan so’ng ushbu o’tish davomida joy almashtirishlar bo’lgan
bo’lmaganligini tekshirib qo’yish mumkin.
Masalan: 5; 2; 1; 3. sonlari uchun 3 ta o tish bajariladi.‟
1 – o’tish    2 – o’tish    3 – o’tish Xar ikkita juftlik solishtiriladi.
A[N-1]  ва  A[N],
A[N-2]  ва  A[N-1]
…
A[2]  ва  A[1]
Bu solishtirishlarda qaysi massivning elementi kichik bo’lsa o’sha element 
bilan joyini almashtiradi. Buning uchun bizga almashtiradigan qiymat kerak. 
Masalan ikkita stakandagi ikki xil suyuqlik bor ularning o’rnini almashtirish uchun
bizga albatta bitta bo’sh stakan kerak bo’ladi. Shuning uchun biz yangi bir  c  degan 
o’zgaruvchi tanlab olamiz.
m[i]=c;
m[i]=m[i+1];
c=m[i+1];
Masala:  massiv elementlarini o’sish tartibida chiqarish.
Bu masalani hal qilish uchun quyidagi algaritmlardan foydalanamiz.
Dasturini ko’ramiz.
#include <iostream>
using namespace std;
int main()7 7 7 3
4 4 3 7
3 3 4 4
5 5 5 5 3 3
4 4
7 5
5 73 3 3
7 4 4
4 7 7
5 5 5 {
int N, i , j, c;
int A[100];
cout<<"Massivning nechta elementi bor? ";
cin>>N;
cout<<"Massivning elementlarini PROBEL bilan kiriting "<<endl;
for (i=1; i<=N; i++)
cin>>A[i];
for (i = 1; i <= N; i ++)
{
for (j = N-1; j >= i ; j --)
if ( A[j] > A[j+1] )
{
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
} }
for (i = 1; i <= N; i++)
cout<<A[i]<<" ";
return 0;
}
Natiyja si : TANLASH USULI
•  Eng kichik elementni toping va uni birinchi o ringa qo ying.a[1]‟ ‟
 element bilan joyini almashtiring.
•  Qolganlaridan eng kichigini toping va uni ikkinchi o ringa qo ying	
‟ ‟
 a[2] binan o rnini almashtirng,va shunday davom etadi.	
‟
Ushbu usil bilan saralashda yozuvlarning tartibga solingan ketma-ketligi
xotiraning dastlabki ketma-ketlik joylashgan uchastkasining o’zida tashkil
etiladi. Birinchi o’tish davomida eng kichik element izlanadi. Bu element
topilganidan so’ng uni dastlabki ketme-ketlikdagi birinchi element bilan joyi
almashtililadi, natiyjada eng kichik element tulayotgan tartiga solingan ketme
ketlikda birinchi element xolatini egalaydi. 
 
              6 
5
3
4 3
5
6
4 3
4
5
63
4
6
5   So’ngra qolgan elementlari ichidan keyingi eng kichik element izlanadi. 
Topilgan bu element xam dastlabki ketma-ketlikning ikkinchi element bilan joyi
almashtiriladi. Bu jarayon barcha elementlar oshib boruvchi tartibda saralanib
bo’lgunga qadar davom etadi.
Yuqorida ko’rib chiqilgan usil bilan saralashda solishtirishlar soni dastlabki
ketma-ketlikning tartibga solinganlik darajasiga bog’liq bo’lmaydi. Shuning
uchun olingan ifoda solishtirishlarning eng kam, eng ko’p va o’rtacha sonini
aniqlaydi. Solishtirishlarning o’rtacha sonini baxolash uchun ifodaning quyidagi
operatsiyasidan foydalanish mumkin. 0.5*N*N
Elementlarining joyini almashtirishlar miqdori dastlabki ketma-ketlik
elementlari joylashuviga bog’liq. Lekin istalgan xolda xam bitta o’tish davomida
bittadan ortiq bo’lmagan joy almashtirish talab etiladi, demak joy almashtirishlar
eng ko’p soni N – 1 ga teng . Eng yaxshi xolda, ya’ni dastlabki ketma- ketlik I 1 2 3 4 5 6
A(i) 10 4 11 9 7 2
1 – o’tish  2 4 11 9 7 10
2 – o’tish 2 4 11 9 7 10
3 – o’tish 2 4 7 9 11 10
4 – o’tish 2 4 7 9 11 10
5 – o’tish 2 4 7 9 10 11 tartibga solingan bo’lsa bitta xam joy almashtirishlar talab etimaydi. Demak, joy
almashtirish talab etmaydi.
   for( i = 1; i <= N ; i ++ )
   {
   nMin = i ;
   for ( j = i+1; j <= N; j ++)
   if( A[j] < A[nMin] )
   nMin = j;
   if( nMin != i )
   {
   c = A[i];
   A[i] = A[nMin];
   A[nMin] = c;
   }
   }
Natiyja si : Sanash orqali saralash
Sanash orqali saralash faqat chekli qiymatli sonlarni saralash mumkin.
Masalan, massivning barcha elementlari qiymatlari 0..10 5
 intervalga tegishli
bo’lsa.
Sanash orqali saralash uchun yordamchi massiv ochamiz, bu massiv har 
bir sondan qancha borligini saqlab turadi. Har bir songa kelganda uning 
sonini oshirish uchun yordamchi massivdan shu indeksning qiymatini 1 ga
oshiramiz.
Keyin har bir 0..10 5
 ndekslarni birma-bir ko’rib bu sondan necha marta
uchragan bo’lsa shuncha marta chiqaramiz.
Bunday saralash usuli massiv elementlarining maksimal qiymati massiv
o’lchamiga nisbatan kichik bo’lganda ancha effektiv bo’ladi.
Ishlash vaqti O(n+Max);
Qo’shimcha xotira O(Max)
Max massiv ementlari maksimali.
#include <iostream>
using namespace std;
int maxn = 100001;
int cnt[100001];
int main()
{int n; cin>>n;
int a[n+1];
for (int i = 0; i < maxn; i++) cnt[i] = 0;
for (int i = 1; i <= n; i++) cin>>a[i];
for (int i = 1; i <= n; i++) cnt[a[i]]++; int ind = 0;
for (int i = 0; i < maxn; i++)
{ for (int j = 1; j <= cnt[i]; j++) {  a[++ind] = i; }}
for (int i = 1; i <= n; i++) {  cout<<a[i]<<endl;}
return 0;
Natiyja: Quyidagicha chiqadi. Xulosa:
Saralash orqali ko’p masalalarni xal qilsa bo’ladi. Katta-katta masalalarni 
oddiy va sodda qilib ishlab chiqsa bo’lar ekan. Bu kurs ishi orqali
saralashning qanchlik qiziqarli va samarali mavzu ekanligini bildim. Bundan
tashqari juda ko’p yangi usullar orqali saralash yoki maksimum va
minumum qiymatlarini topish, massivlar ustida turli xil chiroyli va qiziqarli
masalarni xal qilish va shu kabi misollarni tez bajara olish qobilyatini xosil
qildim. Bu kurs ishi orqali men mustaqil oddiy saralashlarni xal qiladigan dasturlar
tuza olish qobilyatiga ega bo’ldim.
Kundalik hayotimizda juda ko’p uchraydigan hodisalarni saralash 
algoritmalari yordamida hal etishimiz mumkin ekan. O’ylaymanki bu masalar 
dasturlash olamiga kirib borishimga katta fundament vazifasini o’tab beradi. Foydalngan adabiyatlar ro'yxati.
1. tami.uz
2.  ”Informatika” fani bo’yicha maruzalar matini.
3. C/C++ dasturlash tili 2-qism.
4. Sorting Algorithms in 6 Minutes.
5. Merge-sort with Transylvanian-saxon (German) folk dance)
6. http:\\Referat.arxiv.uz
7. http:\\Ziyonet.uz
8. http:\\dastur.uz
9. Narzullayev A. “Pythonda dasturlash” O‘ZBEKISTON RESPUBLIKASI OLIY VA O‘RTA MAXSUS TA’LIM
VAZIRLIGI
SAMARQAND DAVLAT UNIVERSITETI
MATEMATIK MODELLASHTIRISH KAFEDRASI 
AMALIY MATEMATIKA (sohalar bo’ticha) YO’NALISHI
101-GURUH TALABASI OMONOV SHAHZODNING PROGRAMMA
INJENERINGI FANIDAN
SARALASH ALGORITMLARINI VIZUALLASHTIRISH
mavzusida tayyorlagan
KURS ISHI
Ilmiy rahbar: PhD  A. Usmonov
SAMARQAND- 2021

Mavzu: Saralash algoritmlanini vizuallashtirish I. Kirish Saralash haqida ma’lumot va ularning qo’llanilishi. II.Asosiy qism Nazariy qism 1. Saralash xossalari va ularning sinflari 2. Saralash algoritmlari bajarilish tezligida xotirani effektiv ishlatilishi bo’yicha baholash. 3. Ichki va tashqi saralash. Amaliy qism 1.Saralash bo’yicha algaritmlar. 2. Saralashga oid misollar. 3.Sanash orqali saralash. 4.Razryadli saralash(Raqamli saralash). III.Xulosa: Saralashning axamiyati. IV. Foydalangan adabiyotlar ro’yxati.

Kirish: Saralashdan biz kundalik hayotmizda ko’p foydalanamiz. Masalan bozordan biror narsa harid qilishimizda, uning ko’piroq narxi bilan qiziqamiz yoki ularni taqqoslaymiz. Bu narsalar bizga oddiy hodisa bo’lib qolgan, lekin biz siz bilan bu jarayon qanaqa miyamizda xosil bo’layotganligini bir o’ylab ko’raylikchi. Demak, oddiygina biz kunda faydalnayotgan xarakatlarimizni dasturini tuzish uchun ko’p narsalarni bilishimiz va aniq bir maqsadga yo’naltirgan tartiblangan qoidalar yig’indisi zarur bo’ladi. Agar ma’lumotlar kompyuter xotirasida muayyan tartibda saqlanadigan bo’lsa, axborotga ishlov berish va uni izlash bilan bog’liq ko’p masalalar oddiyroq, tezroq va samaraliroq xal qilinadi. Bir qator xollarda ma’lumotlarning tartibga solinganligidan foyda aniq bo’lib, maxsus isbotlashlarni talab etmaydi. Agar lug’at yoki telefon ma’lumotnomasida so’zlar va familalar alifbo tartibida joylashtirilmaganda ulardan foydalanish qanchalik qiyin bo’lishini tasavvur etish mumkin. Lekin ma’lumotlarni saralash zaruriyati masalasi har safar muayyan vazifasiga nisbatan hal qilishi zarur. Bunda tashqi xotira qurulmalari imkoniyatlari, opetativ xotira xajmi, ma’lumotlarga murojaat qilish tezligi, ularni yangilab turish tezligi va ishlov berish xarekteri kabilarni taxlil qilish zarur. Turli ilovalarda tartibga solishning turli mezonlaridan foydalaniladi. Ma’lumotlarularga murojat qilish e’htimolining qiymati, qancha tez-tez murojat etib turishiga ko’ra tartibga solishi mumkin. Odatda, tartibga solish yozuv bo’yicha amalga oshiriladi. Axbotot tizimlari bilan ishlov beriladigan ma’lumotlar birligi bir qator axborot maydonidan iborat bo’lgan yozuv hisoblanadi. Yozuv faqat bittagina maydondan iborat bo’lishi mumkin va bu xolda u kalitli hisoblanadi. Tartibga solish natiyjasida yozuvlar kalitlarning qiymati ortib borishi yoki kamayib borish tartibida joylashadi. Bunday tartibga solish jarayoni saralash deb ataladi. Masalan, fakultet talabalari to’g’risidagi ma’lumotlardan iborat bo’lgan yozuvlar

talabalarning reyting daftarchalari nomerlari bo’yicha tartibga solingan bo’lishi mumkin. Yozuvlar dastlabki ketma-ketligi turli darajada tartibga solingan bo’lishi mumkin. Balki yozuv elementlari belgilangan tartibda joylashgan bo’lishi mumkin. Boshqa bir xolatda elementlarga teskari, ya’ni yozuvlarning dastlabki ketma - ketligi teskari tartibda joylashgan bo’lishi mumkin. Yozuvlarning dastlabki ketma- ketligining qanday tartibda joylashganlik darajasiga ko’ra, solishtirishlar va joyini o’zgartirishlarning u yoki bu soni talab etiladi. Saralash usulini boxolashda solishtirishlar va o’rnini o’zgartirishlarning eng ko’p va kam sonlarini topish juda onson. Bu operatsiyalarning o’rtacha sonini aniqlash uchun kombinatorikaning tegishli bo’limlarini jalb etish zarur. Odatda, saralash jarayonida bajariladigan solishtirish operatsiyalarining o’rtacha soni va elementlarining o’rnini almashtirish yoki o’zgartirishning o’rtacha soni turli usullarni baxolash mezonlari xisoblanadi. Saralash samaradorligi solishtirishning o’rtacha soniga bo’linmasi sifatida aniqlanadi. EXM larning operatsiyon tizimlari, xech bo’lmaganda, bitta dastur – saralash utilitasidan iborat bo’ladi. Lekin ma’lumotlarga ishlov berishning muayyan vazifalarini xal qilishda utilita taklif etilayotgan usil yaroqsiz bo’lishi va boshqa usilni ishlab chiqish yoki foydalanishga to’g’ri kelishi mumkin. Shu munasabat bilan saralashning asosiy usillarini bilish va muayyan vazifa uchun yaroqli bo’lgan u yoki bu usilni baxolay olish muximdir.

II.Asosiy qism Saralash – bu massiv elementlarini biror qonuniyat (o’sish, kamayish, oxirgi raqami, bo’luvchilar, juftlari toqlari …)ga asoslangan holda tartiblashga aytiladi. Umuman olganda saralashning maqsadi berilgan ob’ektlar to’plamini aniq bir tartibda guruxlab chiqish jarayoni tushuniladi. Saralashning maqsadi keyinchalik, saralashgan to’plamni qidirilayotgan elementini topishdani borat. Bu qariyib universal, fundamental jarayon. Biz bu jarayon bilan har kuni uchrashamiz – telefon daftaridagi saralash, kitoblar sarlavhasida, kutubxonalarda, lug’atlarda, pochtada savdoda va x.k. Xar qanday saralash bu dastur demakdir va saralash presedurasining tavsivlarining baxosi dastur qanchalik yaxshi tuzilganiga bog’liq bo’ladi.Ikkita turli usillarning ish unimidagi farq “ yaxshi ” va “ yoman ” dasturlashtirilgan aynan bitta usil o’rtasidagilarga nisbatan bir necha kam bo’lishi mumkin. Saralash presedurasi uchun sarflanadigan xaqiqiy mashina vaqti massivlardan ko’rib chiqish, qiyoslash va sikllarni tashkil etish, ma’lumotlarni boshqa joyga ko’chirish kichik dasturlari, kichik dasturlarning aloqasi uchun bog’liq bo’ladi. Bugun biz siz bilan massiv elementlarini saralashni ko’rib chiqamiz. Saralashning juda ko’pusullari mavjud. Ular turli to’plamlar uchun turlicha bo’lishi mumkin. Massivni saralash uchun ishlatiladigan usul unga berilgan xotirani ixcham holda ishlatish lozim. Boshqacha qilib aytganda, saralanayotgan massiv xuddi shu massivni o’zida amalga oshirilishi lozim. Saralash usullari kam mashina vaqtini talab qilishi lozim. Eng yaxshi tez algoritmlar tartibidagi saralashlarni talab etadi.

n*log n Bu yerda ikkita saralashni farqlash lozim. Ichki va tashqi saralash. Ichki saralash deganda, massivlarni saralashni, Tashqi saralash deganda esa, fayl elementlarini saralashni tushunamiz. Algoritmning asosiy xossalaridan biri unga qo’llanish sferasi(sohasi) bilan bog'liq. Asosan ikkita tur saralashi mavjud: •Ichki saralash. Boshqacha qilib aytganda, bunday saralash massivlarda saralashni amalga oshiradi. Bunda keltirilgan n ketma – ketlik operativ xotirada joylashga va bunda ixtiyoriy yacheykaga raxsatli kirish mavjud. Asosan bu yerda o‘z joyida saralash amalga oshiriladi. • Tashqi saralash. Bu yerda fayllar ustida saralash a malga oshiriladi. Albatta, bunday saralashda vaqt ko‘p ketadi, lekin, o’lcham jixattan katta ketma-ketliklarni saralash mumkin. Faraz qilaylik, bizgaα 1 , α 2 , . . . , α n elementlar berilgan bo’lsin, u holda massivni saralash deganda, uni elementlarini o’rinlariga almashtirish tushuniladi. α k 1 , α k 2 , . . . , α k n