2 . Quick
Sort ( hızlı sıralama )
sıralamanın algoritma, akış şeması
ve “ C “ dilindeki kodunu
yazalım
1. Başla
2. Oku dizi , A
3. Dizinin başlangıç ve bitiş değerlerini sayaç değişkenlerine, dizinin ortanca elemanının değerini orta değişkenine ata,
4. ( A[K] < Orta ) ve ( K<Sağ ) iken K değişkenini bir artır, ( Dizinin ortanca elemanından küçük ve dizinin ortanca elemanından daha solda olan elemanı sağa kaydır )
5. ( Orta < A[J] ) ve ( J>Sol ) iken J değişkenini bir azalt,( Dizinin ortanca elemanından büyük ve dizinin ortanca elemanından daha sağda olan elemanı sola kaydır)
6. K ’nın değeri J ‘ye eşit ya da küçükse A[K] ile A[J] yer değiştir.
7. ( Sol < J ) ise sıralamayı tekrarla
8. ( K < Sağ ) ise sıralamayı tekrarla
9. Sıralanmış diziyi yaz
10. Bitiş


#include <stdio.h>
#include<conio.h>
void hizli_sirala(int a[], int sol, int sag);
void main()
{
clrscr();
int i,j,sayi;
int a[1000];
i=0;
printf("Kaç elemanlı dizi sıralanacak : ");scanf("%d",&sayi);
printf("Dizi elemanları giriliyor\n");
for (i=0;i<sayi;i++)
{
scanf("\t %d",&a[i]);
}
clrscr();
printf("Girdiğiniz dizi:\n");
for (j=0;j<i;j++) printf("%d \n",a[j]);
hizli_sirala(a,0,i-1);
printf("Sıralanmış dizi ( küçükten büyüğe ) :\n");
for (j=0;j<i;j++) printf("%d \n",a[j]);
getch();
}
void hizli_sirala(int a[],int sol, int sag)
{ register int k,j;
int orta,siradan;
k=sol;
j=sag;
orta=a[(sol+sag)/2];
do {
while (a[k]<orta && k<sag) k++;
while (orta<a[j] && j>sol) j--;
if (k<=j) {
siradan=a[k];
a[k]=a[j];
a[j]=siradan;
k++; j--;
}
} while (k<=j);
if (sol < j) hizli_sirala(a,sol,j);
if (k < sag) hizli_sirala(a,k,sag);
}
10 adet dizi elemanını sıralamasını istersek program
çıktısı aşağıdaki gibi olur :
Girdiğiniz dizi:
0
-8
1
6
-2
-9
5
15
0
-18
Sıralanmış dizi ( küçükten büyüğe ) :
-18
-9
-8
-2
0
0
1
5
6
15