SORTING
Definisi Sorting
Pengurutan
(sorting) adalah proses yang mengatur sekumpulan objek/data sehingga nilainya
tersusun, baik itu dari kecil ke besar (ascending) atau dari besar ke kecil
(descending). Disini saya akan membahas tentang selection sort dan insertion
sort.
1.
Selection
sort
Definisi
Selection Sort
Metode
selection sort merupakan metode membandingkan elemen yang pertama dengan elemen
yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain
yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian
ditukar.
- Mencari data terkecil dari data pertama sampai dengan data yang terakhir. Kemudian ditukar posisinya dengan data pertama.
- Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua.
- Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya.
2.
Insertion
Sort
Definisi
Insertion Sort
Metode
Insertion Sort adalah metode pengurutan yang mengambil sebuah data sisip pada
data yang diurutkan dan menggeser data yang lebih besar dari data sisip agar
data sisip dapat ditempatkan pada tempat yang benar.
Proses
yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort adalah
dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai.
Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Berikut
ilustrasinya:
Contoh codding dari Selection Sort dan Insertion Sort secara ascending yang mana user ditentunkan menginputkan maksimal 15 data:
#include<iostream.h>
#include<conio.h>
int data[15];
int n;
void tukar(int a, int b)
{
int t;
t=data[b];
data[b]=data[a];
data[a]=t;
}
void selection_sort()
{
int temp,i,j;
for(i=0;i<n-1;i++)
{
temp=i;
for(j=i+1;j<n;j++)
{
if(data[j]<data[temp])temp=j;
}
if(temp!=i)
{
tukar(temp,i);
}
}
cout<<"Selection sort selesai!!"<<endl;
cout<<"Data : "<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp=data[i];
j=i-1;
while(data[j]>temp && j>=0)
{
data[j+1]=data[j];
j--;
}
data[j+1]=temp;
}
cout<<"Insertion sort selesai!!!"<<endl;
cout<<"Data : "<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
void input()
{
cout<<"Masukkan jumlah data = ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke - "<<(i+1)<<" = " ;
cin>>data[i];
}
}
void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<"1. Input Data"<<endl;
cout<<"2. Selection Sort"<<endl;
cout<<"3. Insertion Sort"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Masukkan Pilihan anda = ";
cin>>pil;
switch(pil)
{
case 1: input();break;
case 2: selection_sort();break;
case 3: insertion_sort();break;
}
getch();
}
while(pil!=4);
}
#include<conio.h>
int data[15];
int n;
void tukar(int a, int b)
{
int t;
t=data[b];
data[b]=data[a];
data[a]=t;
}
void selection_sort()
{
int temp,i,j;
for(i=0;i<n-1;i++)
{
temp=i;
for(j=i+1;j<n;j++)
{
if(data[j]<data[temp])temp=j;
}
if(temp!=i)
{
tukar(temp,i);
}
}
cout<<"Selection sort selesai!!"<<endl;
cout<<"Data : "<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp=data[i];
j=i-1;
while(data[j]>temp && j>=0)
{
data[j+1]=data[j];
j--;
}
data[j+1]=temp;
}
cout<<"Insertion sort selesai!!!"<<endl;
cout<<"Data : "<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
void input()
{
cout<<"Masukkan jumlah data = ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke - "<<(i+1)<<" = " ;
cin>>data[i];
}
}
void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<"1. Input Data"<<endl;
cout<<"2. Selection Sort"<<endl;
cout<<"3. Insertion Sort"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Masukkan Pilihan anda = ";
cin>>pil;
switch(pil)
{
case 1: input();break;
case 2: selection_sort();break;
case 3: insertion_sort();break;
}
getch();
}
while(pil!=4);
}
Terima kasih atas ilmunya
BalasHapus