![gravatar](https://lh3.googleusercontent.com/-70SqiyjlQng/AAAAAAAAAAI/AAAAAAAAACw/Ccpys2_DybU/s120-c/photo.jpg)
Program Sorting Bubble
Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.Jika elemen sekarang lebih besardari elemen berikutnya maka kedua elemen tersebut ditukar (untuk pengurutan ascending).
Ini beberapa contoh program sederhana Sorting Bubble
Jika elemen sekarang lebih kecildari elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan descending).Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikianseterusnya.
Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Ini beberapa contoh program sederhana Sorting Bubble
//#include <time.h>
#include <conio.h>
//#include <stdlib.h>
#include <iostream.h>
class sorting{
friend
istream& operator>>(istream&, sorting&);
friend
ostream& operator<<(ostream&, const sorting&);
public:
sorting();
void selection_sort();
int
pencarianbiner(int);
void
cetakbaris(int,int,int);
void
selection_sort(int&, int&);
void
cari_data();
private:
void
minimum(int, int, int&);
void
tukar(int&, int&);
int data[100],
n;
};
sorting::sorting(){
n=10;
}
void sorting::selection_sort(){
int t;
for(int i=0;
i<n; i++){
minimum(i,n,t);
tukar(data[i],
data[t]);
}
}
void sorting::minimum(int dari, int n,int& tempat){
int
min=data[dari];
tempat=dari;
for(int
i=dari+1; i<n; i++){
if(data[i]<min) {
min=data[i];
tempat=i;
}
}
}
void sorting::tukar(int&a, int&b){
int temp;
temp=a;
a=b;
b=temp;
}
void sorting::cari_data()
{
int posisi=0,
qq;
cout
<<"cari data : "; cin >> qq;
for(int i=0;
i<n; i++){
if(data[i]==qq)
{
posisi
= i+1;
}
}
if(pencarianbiner(qq)==-1)
cout <<"tdk ada"<<endl;
else cout
<< "ada, posisi di : "<< posisi << endl;
}
int sorting::pencarianbiner(int qq){
int midle,
low=0, high=n;
while(low<=high){
midle=(low+high)/2;
cetakbaris(low,midle,high);
if(qq==data[midle])
return
midle;
else
if(qq< data[midle])
high
= midle-1;
else
low=midle+1;
}
return -1;
}
void sorting::cetakbaris(int low,int midle,int high){
cout<<"low"<<low<<"\nmidle"<<midle<<"\nhigh"<<high<<endl;
}
istream& operator>>(istream& in, sorting& A){
cout <<
"Masukkan jumlah data : ";cin >> A.n;
for(int i=0;
i<A.n;i++){
cout
<<"Data["<<i<<"] : ";
in
>> A.data[i];
}
return in;
}
ostream& operator<<(ostream& out, const
sorting& A){
for(int i=0;
i<A.n;i++){
out<<A.data[i]<<" ";
}
return out;
}
int main(){
sorting X;
cin >> X;
cout <<"Data sebelum sorting :\n";
cout <<X<<endl;
X.selection_sort();
cout <<"Data sesudah sorting :\n";
cout <<X<<endl<<endl;
X.cari_data();
getch();
return 0;
}
Posting Komentar