Sorting
merupakan suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan
tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan
kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa
kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa
digunakan dalam suatu proses sorting:
1. Urutan Naik
Mengurutkan dari data yang mempunyai nilai paling kecil sampai besar.
2. Urutan Turun
1. Urutan Naik
Mengurutkan dari data yang mempunyai nilai paling kecil sampai besar.
2. Urutan Turun
Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.
Ada
banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah
untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat
kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika
sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan
mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun
melakukan penggabungan data.
Insertion Sort (Metode Penyisipan)
Straight
Insertion Sort (Metode Penyisipan langsung) Proses pengurutan dengan
metode penyisipan langsung dapat dijelaskan sebagai berikut Data dicek satu per
satu mulai dari yang kedua sampai dengan yang terakhir. Apabila ditemukan data
yang lebih kecil daripada data sebelumnya, maka data tersebut disisipkan pada
posisi yang sesuai. Akan lebih mudah apabila membayangkan pengurutan kartu.
Pertama-tama anda meletakkan kartu-kartu tersebut di atas meja, kemudian
melihatnya dari kiri ke kanan. Apabila kartu di sebelah kanan lebih kecil
daripada kartu di sebelah kiri, maka ambil kartu tersebut dan sisipkan di
tempat yang sesuai.
CONTOH PROGRAM
#include<iostream.h>
#include<conio.h>
main()
{
int x,a[100],i,t,j,k;
cout<<"Insertion Sort - Desc\n";
cout<<"Masukkan banyak bilangan = ";cin>>x;
for(i=1;i<=x;i++)
{
cout<<"\n Bilangan ke-"<<i<<" : ";cin>>a[i];
}
cout<<"\n\n data Sebelum diurutkan :";
for(i=1;i<=x;i++)
{
cout<<" "<<a[i];
}
cout<<endl;
for(i=1;i<=x;i++)
{
for(j=1;j<=i;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
cout<<"\n # "<<i<<" : ";
for(k=1;k<=i;k++)
{
cout<<" "<<a[k];
}
}
cout<<"\n\n data Setelah diurutkan secara descending : ";
for(i=1;i<=x;i++)
{
cout<<" "<<a[i];
}
getch();
}
#include<conio.h>
main()
{
int x,a[100],i,t,j,k;
cout<<"Insertion Sort - Desc\n";
cout<<"Masukkan banyak bilangan = ";cin>>x;
for(i=1;i<=x;i++)
{
cout<<"\n Bilangan ke-"<<i<<" : ";cin>>a[i];
}
cout<<"\n\n data Sebelum diurutkan :";
for(i=1;i<=x;i++)
{
cout<<" "<<a[i];
}
cout<<endl;
for(i=1;i<=x;i++)
{
for(j=1;j<=i;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
cout<<"\n # "<<i<<" : ";
for(k=1;k<=i;k++)
{
cout<<" "<<a[k];
}
}
cout<<"\n\n data Setelah diurutkan secara descending : ";
for(i=1;i<=x;i++)
{
cout<<" "<<a[i];
}
getch();
}
Selection Sort (Metode Seleksi)
Metode seleksi melakukan
pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan
data yang digunakan sebagai acuan atau sering dinamakan pivot. Proses
pengurutan dengan metode seleksi dapat dijelaskan sebagai berikut :
Langkah pertama dicari data terkecil dari data pertama sampai data terakhir.
Kemudian data terkecil ditukar dengan data pertama. Dengan demikian, data
pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Langkah
kedua, data terkecil kita cari mulai dari data kedua sampai terakhir. Data
terkecil yang kita peroleh ditukar dengan data kedua dan demikian seterusnya
sampai semua elemen dalam keadaan terurutkan.
CONTOH PROGRAM
#include
<iostream.h>
#include <conio.h>
int main(){
int a[10];
int
cur,z,temp,cur2,temp2;
cout<<"Banyak
Data: ";
cin>>z;
cout<<endl;
for(int i=0;i<z;i++){
cout<<"Data
["<<i+1<<"]: ";
cin>>a[i];
}
cout<<"\nData
Awal :";
for(int i=0;i<z;i++)
cout<<a[i]<<"
";
cout<<endl;
for(int i=0;i<z;i++){
cur=i;
cur2=z;
for(int
k=i+1;k<z;k++){
if(a[cur]>a[k]){
cur=k;
}}
for(int t=z;t<z;t--){
if(a[cur2]<a[t]){
cur2=t;
}
temp2=a[t];
a[t]=a[cur2];
a[cur2]=temp2;
}
temp=a[i];
a[i]=a[cur];
a[cur]=temp;
}
cout<<"\nData
Akhir :";
for(int i=0;i<z;i++){
cout<<"
"<<a[i];
}
cout<<endl;
getch ();
return 0;
}
Tidak ada komentar:
Posting Komentar