Program Quick Sort Non Rekursif
//Quick non recursive
#include<stdio.h>
#include<conio.h>
#define n 11
#define m 4
int main()
{
int i;
int j,X;
int A[n]={25,12,38,15,20,45,34,3,29,7,22};
int kiri,kanan,kecil,top;
int s1[m],s2[m];
printf("QUICK SORT NON RECURSIVE");
printf("\n\n");
printf("\nSebelum disort : ");
for(i=0;i<=n-1;i++)
printf(" %d",A[i]);
printf("\n");
s1[0]=0;
s2[0]=n-1;
top=0;
while (top>=0)
{
kiri=s1[top];
kanan=s2[top];
top--;
i=kiri; j=kanan; kecil=kiri;
while(i<=j)
{
while(i<=j && A[i]<=A[kiri])
{
kecil=i;
i++;
}
while(i<=j && A[j]>A[kiri])
{
j--;
}
if(i<=j)
{
X=A[i];
A[i]=A[j];
A[j]=X;
kecil=i;
i++;
j--;
}
}
}
X=A[kecil];
A[kecil]=A[kiri];
A[kiri]=X;
if(kiri<kecil-1)
{
top++;
s1[top]=kiri;
s2[top]=kecil-1;
}
if(kecil+1<kanan)
{
top++;
s1[top]=kecil+1;
s2[top]=kanan;
}
printf("\nSetelah disort : ");
for(i=0;i<=n-1;i++)
printf(" %d",A[i]);
getch();
}
0 komentar:
Posting Komentar