Quick sort
#include <stdio.h>
#include <stdlib.h>
/* Deklarasi Global */
int tabInt[6] = {6,7,8,3,4,5};
/* Prosedur Pivot Pinggir */
void pivotPinggir(int l, int r)
{
int i,j,temp;
i=l;
j=r;
do
{
//Looping pivot kiri jalan ke kanan
while((tabInt[i]<tabInt[r]) && (i<=j))
{
i=i+1;
}
//Looping pivot kanan jalan ke kiri
while((tabInt[j]>tabInt[l]) && (i<=j))
{
j=j-1;
}
if(i<j)
{
//Swap nilai array
temp=tabInt[i];
tabInt[i]=tabInt[j];
tabInt[j]=temp;
i=i+1;
j=j-1;
}
}while(i<j);
if(l<j)
{
pivotPinggir(l,j);
}
if(i<r)
{
pivotPinggir(i,r);
}
}
/* Pivot Tengah */
void pivotTengah(int l, int r)
{
int i,j,temp,pivot;
i=l;
j=r;
//Membagi array menjadi dua bagian untuk penelusuran
pivot=tabInt[(l+r)/2];
do
{
//Looping pivot kiri jalan ke kanan
while((tabInt[i]<pivot) && (i<=j))
{
i=i+1;
}
//Looping pivot kanan jalan ke kiri
while((tabInt[j]>pivot) && (i<=j))
{
j=j-1;
}
//Swap
if(i<j)
{
temp=tabInt[i];
tabInt[i]=tabInt[j];
tabInt[j]=temp;
i=i+1;
j=j-1;
}
}while(i<j);
if((l<j) && (j<r))
{
pivotTengah(l,j);
}
if((i<r) && (i>l))
{
pivotTengah(i,r);
}
}
void cetakArray(int n, int arr[])
{
int i;
for(i=0;i<n;i++)
{
printf(" %d", arr[i]);
}
}
int main()
{
//pivotPinggir(0,9);
pivotTengah(0,5);
cetakArray(6,tabInt);
return 0;
}
Komentar
Posting Komentar