5-ma’ruza: Ma’lumotlarni saralash algoritmlari. Saralash tushinchasi va uning vasifasi. Ma’ruza rejasi Plan lecture


To’g’ridan-to’g’ri almashtirish orqali (pufaksimon) saralash


Download 18.71 Kb.
bet4/7
Sana28.09.2023
Hajmi18.71 Kb.
#1689527
1   2   3   4   5   6   7
Bog'liq
5 mavzu Ma’lumotlarni saralash algoritmlari Saralash tushinchasi

To’g’ridan-to’g’ri almashtirish orqali (pufaksimon) saralash

Saralash algoritmi sxemasi

Bu saralash usulida eng kichik (yengil) elementlar yuqoriga “qalqib” chiqadi, katta (og’ir) elementlar pastga “cho’kadi”.

To’g’ridan-to’g’ri almashtirish orqali (pufaksimon) saralash

Pufaksimon saralash algoritmi (C++)

void pufak_s (key a[], int N)

{

int i,j;

key x;

for (i=0; i

for(j=N-1; j>i; j--)

if(a[j-1]>a[j] {

x=a[j]; a[j]=a[j-1]; a[j-1]=x;

} }

Saralashning “to’lqinsimon” usuli

Sheyker usulida saralash algoritmi

  • Bu algoritmning asosiy g’oyasi shundaki, bunda saralash “to’lqinsimon” tarzda amalga oshiriladi.
  • Shuning uchun ham dastur boshida massivda chapdan o’ngga, keyin o’ngdan chapga o’tish orqali saralaydi. Ya’ni, chapga o’tilganda o’ng tomonga katta sonlarni, o’ngdan o’tganda esa, chap tomonga kichik sonlarni terib chiqadi.

Sheyker usulida saralashning qulayligi

  • Agar saralash, tashqi xotirada amalga oshirilayotgan bo’lsa, elementning kaliti katta hajmdagi ma’lumotlar bilan bog’liq bo’lganda, o’rin almashtirishlar soni juda ko’p vaqtni oladi va protsessorga og’ir yuklama tushadi.
  • Sheyker algoritmi ushbu almashtirishlar sonini kamaytiradi, ya’ni quyidagicha ishlaydi:

    • 1. Birinchi qadamda barcha elementlar minimum va maksimumga ajratib olinadi.
    • 2. Minimal element massiv boshiga, maksimal element esa massiv oxiriga mos ravishda joylashtiriladi.
    • 3. Algoritm qolgan elementlar qismmassivida ham ushbu amalni takrorlaydi.

Sheyker usulida saralash algoritmi (C++ da)

  • void Sort(int col)
  • { int trash=0; bool f=true;
  • for (int i=1; (i<=col) && (f=true) ; i++)
  • { f=false; // chapdan o’ngga o’tish
  • for (int j=i; j<=col-i; j++)
  • { if (array [j]>array [j+1])
  • { trash=array[j]; array [j]=array [j+1];
  • array [j+1]=trash; f=true; } }
  • // o’ngdan chapga o’tish
  • for (int j=col-i-1; j>i ; j--) {
  • if (array [j]
  • array [j-1]=trash; f=true; } } } }

Download 18.71 Kb.

Do'stlaringiz bilan baham:

1   2   3   4   5   6   7




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