METODE SORTING

 Dibawah ini beberapa jenis - jenis metode sorting yang dapat kalian ketahui.

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Quick Sort
  • Merge Sort
  • Heap Sort
  • Binary Sort
Tetapi, kita hanya akan membahas 3 jenis metode sorting saja, yaitu bubble sort, selectionsort, dan insertion sort. Karena ketiga jenis ini adalah yang paling umum digunakan.

Metode Bubble Sort

Metode ini terinspirasi dari gelembung air, jadi metode ini dinamakan bubble sort. Cara kerjanya seperti di atas, dimana data pertama dan kedua akan dibandingkan terlebih dahulu. Apabila dari kedua lebih besar maka, tidak terjadi pergeseran dan akan dilanjutkan dengan perbandingan data ketiga dan selanjutnya. Apabila data yang dibandingkan lebih kecil dari data yang berada disampingnya. Maka data terkecil hasil perbandingan akan digeser pada sisi kiri dan perbandingan akan terus berlanjut.

source code :

#include <iostream>
#include <conio.h>

using namespace std;

void prosesPerpindahan(int data[],int y){
 int x;

 for(x=0;x<y;x++){
  cout<<data[x]<<" ";
 }

 cout<<endl;
}

void prosesSorting(int data[],int y){
 int proses,x,tampung;

 for(proses=1;proses<y;proses++){
  for(x=0;x<y-proses;x++){
   if(data[x]>data[x+1]){
    tampung=data[x];
    data[x]=data[x+1];
    data[x+1]=tampung;
   }
  }
  cout<<"Tahap Ke-"<<proses<<" : ";
  prosesPerpindahan(data,y);
 }


}

int main(){
 int data[]={6,10,15,12,11};
 int x;
 const int jumlahdata=5;

 prosesSorting(data,jumlahdata);

 cout<<endl;
 cout<<"Setelah Di Urutkan : "<<endl;
 prosesPerpindahan(data,jumlahdata);

}



Metode Selection Sort





Kalau untuk metode selection sort ini, berbeda dengan bubble sort. Perbedaannya terletak pada dimana data terbesar berhenti. Metode selection sort, data 1 pertama akan di bandingkan dengan data kedua, apabila data tersebut bernilai lebih besar di banding data pertama. Maka, data tersebut akan bergeser dan akan berhenti hingga data n+1 lebih besar dari data tersebut.

source code :


#include <iostream>

using namespace std;

int main()
{
    int data[]={3,20,2,12,11};
 int n=5,i,j,x,posisi,tampung;

     cout<<"Sebelum Di Urutkan : ";
    for (int i=0; i<n; i++){
     cout<<data[i]<<" ";
    }

     cout<<endl;
     cout<<endl;

 for (int i=0;i<n-1;++i){
    posisi=i;
    for (int j=i+1;j<n;++j){
      if (data[j]<data[posisi]){
          posisi=j;
      }
    }


    if (posisi!=i){
         tampung=data[posisi];
      data[posisi]=data[i];
      data[i]=tampung;
     }

    cout<<"Tahap Ke-"<<i+1<<" : ";
    for (int x=0;x<n;++x){
     cout<<data[x]<<" ";
    }
     cout<<endl;
  }

     cout<<endl;

     cout<<"Setelah Di Urutkan Menggunakan Metode Selection Sort : ";
    for(int i=0;i<n;++i){
     cout<<data[i]<<" ";
   }
   cout << endl;

}



Metode Insertion Sort

Metode insertion sort ini cara kerjanya, seperti gambar di atas. Dimana data terkecil akan di kelompokkan ke sisi kiri sehingga terjadi pergeseran pada sisi kanan. Data ini selalu dibandingkan setelah pergeseran. Contoh, Pada gambar terdapat angka 2 dimana akan dibandingkan dengan 6 selanjutnya terjadi pergeseran. Setelah itu, dibandingkan kembali dengan 5 dan 6 lalu hasilnya lebih kecil maka terjadi pergeseran dimana 5 lebih besar dari 2. Selanjutnya, 2 dibandingkan dengan 1 dan 5 nah di sini sudah tidak ada data lagi karena data terkecil adalah 1. Jadi, 2 akan berhenti setelah angka 1.

source code :

#include <iostream>
using namespace std;

int x[]={3,4,6,5,2};
int i;
int a;
int j= sizeof(x)/sizeof(*x);
int temp, pos;
int b,c;


main ()
{
    for(a=0;a<j; a++){
        cout << x[a] << "";
    }
    cout << ""<< endl;

    for (a=0; a < j; a++){
      temp = x[a];
      pos =a;
      for(b=a; b < j; b++){
        if(x[b] < temp){
            temp=x[b];
            pos=b;
        }
      }
      x[pos] = x[a];
      x[a] = temp;

      cout << "" << endl;
      cout << a << " : " ;
      for(c=0; c < j; c++){
        cout << x[c] << " ";
      }


    }
    cout << " " << endl;

}




Komentar