#include
//seperti procedure dalam pascal
void tampilkan_larik(int data[],int n)
{
int i;
//perulangan mencetak array
for (i=0;i
}
//procedure pengurutan dng bubble sort
void bubble ( int data[],int n)
{
int tahap , j, tmp;
int ada_pertukaran;
//dianggap 'tahap=1'
tahap = 1;
//dianggap 'ada_pertukaran=1'
ada_pertukaran = 1;
//perulangan selama tahap < n-1 & ada_pertukaran mka jalankan
while(tahap < n-1 && ada_pertukaran)
{
//ada_pertukarandianggap 0
ada_pertukaran = 0;
//perulangan dng var j dianggap = 0, j
if (data[j] > data[j+1])
{
//dianggap ada_pertukaran =1
ada_pertukaran=1;
//terjadi pertukaran tmp dng data[j]
//tmp hanya digumakan untuk tempat pertukaran
tmp=data[j];
//data[j] yg tadi ditukar akan kembali ditukar dgn data setelah data [j]
data[j] = data[j+1];
//data setelah data[j] akan kembali ditukarkan dgn tmp
data[j+1] = tmp;
}
//mencetak tahapan sorting
cout<<"hasil tahap"<
tampilkan_larik(data, n);
//var tahap akan trus bertambah 1
tahap++;
}
}
//peocedure selection sort
void selection_sort (int data[],int n)
{
int posmin,posawal,j,tmp;
//perulangan dng posawal = 0 sampai posawal
for(posawal=0;posawal < n-1;posawal++)
{
//menganggap posmin = posawal
posmin=posawal;
//perulangan dari j= posawal+1 sampai j
//posmin dianggap j
posmin = j;
//terjadi pertukaran seperti bubble sort
tmp = data[posawal];
data[posawal] = data[posmin];
data[posmin] = tmp;
//mencetak tahapan sorting
cout<<"Hasil pos awal : "<
tampilkan_larik(data, n);
}
}
//procedure insertion sort
//pengurutan dengan menyisipkan data
void insertion_sort(int data[], int n)
{
int i,k;
int x ;
int ketemu;
// perulangan dari k=1 sampai k
//menganggap x=data[k]
x=data[k];
//sisipkan x ke dalam data[0..k-1]
i=k-1;
ketemu=0;
while((i>=0)&&(!ketemu))
{
if (x {
data[i+1] = data[i];
i=i-1;
}
else
ketemu = 1;
data[i+1] = x;
cout<<"Hasil Tahap : ";
tampilkan_larik(data, n);
}
}
}
int partisi (int data[], int p,int r)
{
int i,x,j,tmp;
//digunakan untuk membagi larik data[p..r] menjadi 2 bagian
x = data[p];
//i merupakan partisi yg bergerak naik
i = p;
//j merupakan partisi yg bergerak mundur
j = r;
while (1)
{ //lakukan perulsngsn selama data[j] > x
while(data[j] >x)
//j akan digeser turun
j = j-1;
//lakukan perulangan selama data[i] < x
while(data[i] < x)
//i akan digeser naik
i = i+1;
//jka i
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
cout<<"Hasil Tahap : ";
tampilkan_larik(data, r);
}
else
//titik balik partisi berupa j
return j;
}
}
//procedure quick sort
void quick_sort (int data[],int p,int r)
{
int q;
if (p
q = partisi(data,p,r);
//kemudian memanggil procedure quick_sort
quick_sort(data,p,q);
//memanggil procedure quick_sort dgn var p ditukar dng q+1
quick_sort(data,q+1,r);
}
}
void main()
{
const jum_data = 8;
int i;
int data[] = {5,8,1,4,3,6,7,2,};
char pil;
do
{
clrscr();
cout<< "1.Bubble sort\n"<<"2.Selection sort\n"<<"3.Insertion Sort\n";
cout<<"4.Quick Sort\n"<<"5.exit\n";
cout<<"Silahkan Masukkan Pilihan Anda--> ";
pil = getche();
//menjalankan bubble_sort
if (pil=='1')
{
clrscr();
cout<<"PENGURUTAN DENGAN BUBBLE SORT\n\n";
bubble(data,jum_data);
cout<<"Hasil Pengurutan:\n";
tampilkan_larik(data,jum_data); getch();
}
//menjalankan selection_sort
if (pil=='2')
{ clrscr();
cout<<"PENGURUTAN DENGAN SELECTION SORT\n\n";
selection_sort(data,jum_data);
cout<<"Hasil pegurutan : \n";
tampilkan_larik(data,jum_data);getch();
}
//menjalankan insertion_sort
if (pil=='3')
{
clrscr();
cout<<"PENGURUTAN DENGAN INSERTION SORT\n\n";
insertion_sort(data, jum_data);
cout<<"Hasil Pengurutan : \n";
tampilkan_larik(data,jum_data);getch();
}
//menjalankan quick_sort
if (pil=='4')
{
clrscr();
cout<<"PENGURUTAN DENGAN QUICK SORT\n\n";
quick_sort(data, 0, jum_data);
cout<<"Hasil Pengurutan : \n";
tampilkan_larik(data, jum_data);getch();
}
//bila pilihan 5 maka hentikan program
}while(pil!='5');
getch();
}
No comments:
Post a Comment