9
Bubble sort saralash algoritmi qanday usulda saralash? Ushbu so`z pufakcha usulida
saralash degan ma’noni anglatadi. Bu saralash usulida massiv elementlarining ikki qo`shni
elementlari taqqoslanadi va agarda noto`g`ri joylashgan bo`lsa ularnung o`rinlari almashtiriladi.
Umumiy
n-1 marta ushbu jarayon bajariladi. Har safar ikkita qo`shni element taqqoslanadi.
Yuqoridagi jarayonda har bir element o`z o`rniga siljib boradi xuddi suvdagi pufakchaga o`xshab.
Shu sababli ham uning nomi pufakcha usulida saralash deb nomlanadi. Bu algoritmning asosiy
g‘oyasini yozish uchun tartiblanishi kerak bo‘lgan yozuvlar vertikal joylashgan massivda
saqlanadi deb faraz qilamiz. Kalit maydonning kichik qiymatli yozuvlari «yengil» va shuning
uchun pufakcha kabi ular yuqoriga «suzib chiqadi». Massiv bo‘ylab birinchi o‘tishda massivning
birinchi yozuvi olinadi va uning kaliti navbatma-navbat keyingi yozuvlarning kalitlari bilan
solishtirib boriladi. Agar nisbatan «og‘ir» kalitli yozuvlar uchrasa, u holda bu yozuvlar joyini
almashtiradi. Nisbatan «yengil» yozuvlar uchraganda bu yozuv taqqoslash uchun etolon bo‘ladi
va keyingi barcha yozuvlar shu kalit bilan solishtiriladi. Natijada eng kichik qiymatli kalit
massivning eng yuqorisiga chiqadi. Massiv bo‘ylab ikkinchi o‘tishda massivning massivni
birinchi o‘tishda topilgan yozuvdan keyin joylashgan og‘irligi bo‘yicha ikkinchi kalit olinadi.
Massiv bo‘ylab ikkinchi va keyingi o‘tishlarda oldingi o‘tishlarda topilgan yozuvlarni ko‘rib
chiqish shart emas, chunki ular qolgan yozuvlarga qaraganda kichik kalitlarga ega.
Quyida bubble sort algoritmining
c++ tilidagi dasturini keltiramiz:
#include
using namespace std;
int main(){ int a[100], i, j, n, t;
cin>>n;
for(i=0; icin>>a[i];
for(i=n; i>=1; i--)
{ for(j=0; jif(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
for(i=0; icout<return 0; }
11
using namespace std;
int main()
{ int *a, i, n, j, m;
cin >> n;
a=new int [n];
for(i=0; i
cin>>a[i];
for(i=1; i
{ j=i;
while(j>0&&(a[j]
{ m=a[j];
a[j]=a[j-1];
a[j-1]=m;
j--; } }
for(i=0; i
cout << a[i] << " ";
delete []a;
return 0; }
Selection sort alagaritmi – bu tanlash algoritmidir. Tanlash algoritmi saralash
algoritmlarining eng oddiy saralash usuli hisoblanadi. Ushbu saralash algoritmi ro’yhatning ikki
qismga bo’linadigan qismi, chap tomonning oxiridagi qismi va o’ng tomonning ajralmas qismiga
bo’linadigan joylarda taqqoslashga asoslangan saralash algoritmidir. Dastlabki holda,
tartiblangan qism bo’sh va sarlavha qilinmagan qism butun ro’yhat hisoblanadi. Eng kichik
eliment unsorted qatordan tanlanadi va eng chap element bilan almashtiriladi va bu element
tartiblangan qatorning bir qismiga aylanadi. Ushbu jarayonni bajarish tartibsiz qator qatorni
o’nga bir element bilan harakat qilishni davom ettiradi. Uishbu saralash algaritmi juda katta
malumotlar majmui uchun mos emas, chunki urtacha va eng yamon vaziyat murakkabligi O(n
2
)
, bu yerda n saralaniyotgan massivning elementlar sonini bildiradi.
Quyida tanlash asosida saralash algoritmining dastur matnini
C++ dasturlash tilida keltirib
o’tamiz:
#include
13
taqqoslash sharti bajarilsa taqqoslangan elementlar o’rni almashadi va bu jarayon taqqoslash
sharti bajarilmay qolguncha davom etadi
Dastur natijasi quyidagicha bo’ladi: