Pages

Rabu, 23 Maret 2011

Contoh Program Quick Sort Non Rekursif

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