Sorting (Buble dan Quick)
A. Sorting
Sorting dalam algoritma pemrograman merupakan proses pengurutan sekumpulan data dalam suatu urutan tertentu. Sorting dipakai untuk :
- Membantu proses pencarian (searching)
- Menyelesaikan masalah - masalah kompleks seperti penjadwalan, pengolahan basis data, riset operasi, dan lain - lain.
B. Jenis - jenis Sorting
1. Bubble Sort
Metode pengurutan
dengan cara membandingkan data dan menukar data dengan tepat disebelahnya
secara terus menerus sampai dipastikan data tidak ada lagi perubahan.
Contoh Program :
Algoritma
|
#include <iostream>
using namespace std;
main()
{
int db,
i, j, pp, buble;
int
blngn[5];
string
iml;
cout
<< "Masukkan Jumlah Data Bilangan = "; cin >>db;
for
(i=0; i<db;i++)
{
cout
<< "Bilangan Ke- "<<i+1<<" = "; cin
>>blngn[i];
}
lagi:
cout
<< "Mengurutkan Data Bilangan : "<<endl;
cout
<< " 1. Dengan
Ascending"<<endl;
cout
<< " 2. Mencari
Descending"<<endl;
cout
<< "Pilihan Pengurutan(1/2) : "; cin >>pp;
if(pp==1)
{
for(i=0;i<=db-2;i++)
{
for(j=db-1;j>=i+1;j--)
{
if(blngn[j]<blngn[j-1])
{
buble=blngn[j];
blngn[j]=blngn[j-1];
blngn[j-1]=buble;
}
}
}
cout
<< "Data telah diurutkan berdasarkan Ascending"<<endl;
for(i=0; i<db; i++)
{
cout << "Data Ke - " <<i+1<< " :
"<<blngn[i]<<endl;
}
}
else
if(pp==2)
{
for(i=0;i<=db-2;i++)
{
for(j=db-1;j>=i+1;j--)
{
if(blngn[j]>blngn[j-1])
{
buble=blngn[j];
blngn[j]=blngn[j-1];
blngn[j-1]=buble;
}
}
}
cout
<< "Data telah diurutkan berdasarkan Descending"<<endl;
for(i=0; i<db; i++)
{
cout << "Data Ke - " <<i+1<< " :
"<<blngn[i]<<endl;
}
}
cout
<< "Ingin Mengurutkan Lagi(Y/T) : "; cin >> iml;
if(iml=="y"||iml=="Y")
{
goto
lagi;
}
else
cout
<< "Selesai"<<endl;
}
|
Hasil Running
Algoritma pengurutan yang sangat cepat dengan tipe penyelesaian divide dan conquer. sehingga cocok untuk mengurutkan data dalam jumlah besar.
Contoh Program :
|
Algoritma
|
|
#include <iostream>
using namespace std;
void quick_sort(int data[], int left, int right)
{
int i = left, j = right;
int tmp;
int pivot =
data[(left+right)/2];//partisi
while (i<j)
{
while (data[i] <
pivot)
{
i++;
}
while (data[j] >
pivot)
{
j--;
}
if (i<=j)
{
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
i++;
j--;
}
} //rekursif
if (left < j)
{
quick_sort(data, left,
j);
}
if (i < right)
{
quick_sort(data, i,
right);
}
}
int main()
{
int i, n, data[50];
cout<<"Masukan
banyak data: ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Masukan data ["<<i<<"] :
";cin>>data[i];
}
cout<<"\nData
sebelum diurutkan: "<<endl;
for(i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<"\n";
quick_sort(data,0,n-1);//hasil pengurutan
cout<<"\nHasil
pengurutan:\n";
{
int i;
for (i=0;i<n;i++)
cout<<data[i]<<" ";
cout<<"\n";
}
}
|
Hasil Running
0 komentar:
Posting Komentar