Test gift and xml


Algoritmning umumiy sxemasi


Download 1.72 Mb.
bet17/34
Sana30.04.2023
Hajmi1.72 Mb.
#1413071
1   ...   13   14   15   16   17   18   19   20   ...   34
Bog'liq
Algaritm umumiy

Algoritmning umumiy sxemasi

  • Tuzilmadan aniq qiymatga ega biror p element tanlab olish;

  • Ushbu elementga nisbatan chap tomonga “kichik yoki teng”, o’ng tomonga esa “katta yoki teng” elementlarni ajratib olish;

  • Natijada ikkita “kichiklar” va “kattalar” qismto’plami hosil bo’ladi;

  • Agar hosil qilingan qismto’plamlar 2 tadan ortiq elementlarga ega bo’lsa, u holda ushbu jarayon har bir qismto’plam uchun takrorlanadi.


#include
#include
int array[100000];
void tezsaralash (long h,long l)
{ long i,j; int p, temp;
i=l; j=h;
p=array[(l+h)/2];
do
{
while (array[i]
while (array[j]>p) j--;
if (i<=j)
{ temp=array[i];
array[i]=array[j];
array[j]=temp;
i++; j--;
} }
while (i<=j);
if(j>l) tezsaralash(j,l);
if(h>i) tezsaralash(h,i);
}
main()
{
int size; int i;
cin>>size;
for (i=0; icin>>array[i];
tezsaralash(size-1,0);
for(i=0; icout<getch();
return 0;
}

37. Aralashtirib saralash usuli algoritmining ishlash printsipi, va uning dasturlash tilidagi funktsiyasi?
Bu saralash usulining asosiy g’oyasi, ikkita alohida saralangan massiv yordamida, ularni aralashtirib yuborish orqali yangi saralangan massiv hosil qilishdan iborat.
Bu algoritm quyidagi prinsip asosida ishlaydi:
1. Berilgan massiv ikkita massivga ajratib olinadi.
2. Qismmassivlarning har biri alohida saralanadi.
3. Saralangan massivlar qayta qo’shiladi.

  • A(6,5,1,9,3,4,8,7,2) massiv berilgan.

Ushbu massiv elementlarini o’rtacha qiymatining butun qismiga nisbatan ikkiga ajratamiz:

    • А1(5,1,3,4,2) – birinchi qismmassiv.

    • А2(6,9,8,7) – ikkinchi qismmassiv.

Har birini alohida saralaymiz:

      • А1(1,2,3,4,5) –birinchi qismmassiv.

      • А2(6,7,8,9) – ikkinchi qismmassiv.

A=A1+A2 yangi saralangan massiv hosil qilinadi
viod Sliv(int p,q)
{
int r,i,j,k
r=(p+q) div 2;
i=p; j=r+1;
for (k=p; k<= q; k++)
if (i<=r) and ((j>q) or (a[i]{
b[k]=a[i]; i=i+1;
} else
{
b[k]=a[j]; j=j+1;
}
for (k=p; k<= q; k++)
a[k]=b[k];
}
void Sort(int p,q)
{
if p{
Sort(p,(p+q) div 2);
Sort((p+q) div 2 + 1,q);
Sliv(p,q);
}
}



Download 1.72 Mb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   34




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