Pada kesempatan ini saya membagikan materi struktur data tema kita kali ini adalah buble sort dengan menggunakan bahasa pemrograman c/c++, pada materi struktur data ini sebenarnya ada banyak macam metode sorting salah satunya metode bubble sort. Yang mana sorting dengan menggunakan pertukaran gelembung, bagaimana mau tahu bubble itu ikuti script program dibawah ini.
=================================================================
/* develop by achmad sayfudin luntas ilmu*/
#include"time.h"
#include"stdio.h"
#define max 10000
//variable global
int n,j,i,data[max],temp[max];unsigned int start,stop;
void input(){
int ran;
printf("input your add of data: ");
scanf("%d",&n);
for(i=0;i<n;i++){
ran=rand();
//printf("data ke %d : ",i+1); // untuk insert manual
//scanf("%d",&data[i]);//jika pada pointer bisa ditulis langsung scanf("%d",data) jika variable data berupa pointer
data[i]=ran;
}
for(i=0;i<n;i++){
temp[i]=data[i];
}
}
void tampil(){
int k;
puts("following data has sorted");
for(k=0;k<n;k++){
printf("%d ",data[k]);
}
}
void tukar(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
//sintak dari buble sort dengan optimasis
void buble(int tanda){
int flag,perbandingan=0,j=0;
start=clock(); // untuk menghitung waktu proses processor
for(i=0;i<n-1;i++){
flag=0;
for(j=0;j<n-i-1;j++){
perbandingan++;
if(data[j]>data[j+1]){
tukar(&data[j],&data[j+1]);
flag=1;//sebagai penanda jika terdapat penukaran data
}
}
//1 buble up jika data sudah terurut maka tidak akan diurutkan lagi
if(flag==0 && tanda==1){
break;
}
}
stop=clock();
tampil();
printf("\n\n jumlah perbandingan= %d ",perbandingan);
printf("\n dengan total waktu= %d ms",(stop-start));
}
//sintak untuk buble sort tanpa optimasi
void buble2(int tanda){
int flag,perbandingan=0,j=0;
start=clock();// untuk menghitung waktu proses processor
for(i=0;i<n-1;i++){
flag=0;
for(j=0;j<n-i-1;j++){
perbandingan++;
if(temp[j]>temp[j+1]){
tukar(&temp[j],&temp[j+1]);
flag=1;//sebagai penanda jika terdapat penukaran data
}
}
}
stop=clock();
tampil();
printf("\n\n jumlah perbandingan= %d ",perbandingan);
printf("\n dengan total waktu= %d ms",stop-start);
}
main(){
char pil;int indikator=1,perbandingan=0,flag=0;
puts("\t PROGRAM SORTING BUBLE SORT");
puts("\t BY:ACHMAD SAYFUDIN\n");
puts("\t ==========================\n");
input();
do{
puts("\nmenu\n");
printf("1.OPTIMASI\n2.NON OPTIMASI");
printf("\n Masukan pilihan= ");
fflush(stdin);
pil=getchar();
if(pil=='1'){
buble(indikator);
}
else if(pil=='2'){
buble2(indikator);
}
printf("\n\nmenu awal: ");
fflush(stdin);
pil=getchar();
}while(pil=='y'||pil=='Y');
}
=================================================================
Berikut output programnya.
Di atas source code nya dan ada waktu kecepatan perhitungan nya selamat mencoba.