Roni akan membangun program yang akan melakukan proses pengurutan dengan metoda Quick Sort. Program tersebut diberikan pada listing 1.
#include
#define N 20
int quick(int bawah, int atas);
int i, j, A[N];
main()
{
int jml;
clrscr();
printf("MENGURUTKAN DATA DENGAN QUICK SORT \n\n");
printf("Masukkan jumlah bilangan (maks 20) : ");
scanf("%d",&jml);
// input data
for (i=0;i
printf("Bilangan ke %d : ",i+1);
scanf("%d",&A[i]);
}
// pengurutan data
quick(0,jml-1);
// menampilkan hasil
printf("Data yang telah terurut : \n");
for (i=0;i
printf("%d\n",A[i]);
}
}
// fungsi quick
int quick(int bawah, int atas)
{
int pivot, temp;
// pengulangan dilakukan
// selama bawah < atas
if (bawah
i = bawah;
j = atas;
pivot = A[j];
do
{
while (i
i++;
}
while (j>i && A[j]>=pivot)
{
j--;
}
if (i
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
while (i
A[j] = A[atas];
A[atas] = temp;
if (j-bawah
quick(bawah,j-1);
quick(i+1,atas);
}
else
{
quick(i+1,atas);
quick(bawah,j-1);
}
}
}
Hasil apabila program tersebut dijalankan adalah sebagai berikut:
MENGURUTKAN DATA DENGAN QUICK SORT
Masukkan jumlah bilangan (maks 20) : 7
Bilangan ke 1 : 5
Bilangan ke 2 : 1
Bilangan ke 3 : 3
Bilangan ke 4 : 10
Bilangan ke 5 : 8
Bilangan ke 6 : 6
Bilangan ke 7 : 7
Data yang telah terurut :
1
3
5
6
7
8
10
Bandingkan dengan gambar 7.
Perhatikan dengan seksama program tersebut. Anda akan melihat bahwa di dalam fungsi quick() dipanggil lagi fungsi quick() itu sendiri. Tentunya Anda masih ingat bukan bahwa hal tersebut merupakan fungsi rekursif.
Sebagai latihan, Anda bisa membuat program yang sama namun untuk pengurutan descending atau menurun. Selamat mencoba.
Tidak ada komentar:
Posting Komentar