Jumat, 03 Mei 2019

Sorting


Pengertian Sorting
            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. Urut naik (ascending)
            Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar.
2. Urut turung (descending)
            Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.
Metode-metode sorting yaitu antara lain:
1.      Bubble Sort
2.      Quick Sort
3.      Insert Sort
4.      Marge Sort
5.      Selection Sort

A. Bubble Sort
Bubble Sort adalah salah satu metode sorting atau mengurutkan dari data terkecil ke data terbesar ataupun dengan cara membandingkan elemen kesatu dengan elemen yang selanjutnya.
            Berikut contoh program bubble sort pada C++ yaitu mengurutkan nilai yang terkecil hingga nilai terbesar:

1. Program Bubble Sort C++


#include<iostream>
#include<conio.h>
using namespace std;

int main()
{
   int data[10];
   int i, j, tmp;
   cout<<"Program Mengurutkan Data"<<endl;
   cout<<"Dengan Metode Bubble Sort"<<endl;
   for(i=0; i<10; i++)
   {
       cout<<"Masukkan bilangan ke "<<(i+1)<<" : ";
      cin>>data[i];
   }

   cout<<"Data sebelum diurutkan : "<<endl;
   for(i=0; i<10; i++)
   {
       cout<<data[i]<<" ";
   }
   cout<<endl;

   for(i=0; i<9; i++)
   {
       for(j=i+1; j<10; j++)
      {
          if(data[i]>data[j])
         {
             tmp = data[i];
            data[i] = data[j];
            data[j] = tmp;
         }
      }
   }
   cout<<"Data setelah diurutkan : "<<endl;
   for(i=0; i<10; i++)
   {
       cout<<data[i]<<" ";
   }
   getch();
}

2. Hasil running Bubble Sort


B. Quick Sort
            Quick sort merupakan salah satu algoritma pengurutan data yang menggunakan teknik membagi data menjadi partisi-partisi. Metode quick sort disebut juga dengan nama partition exchange sort.
Berikut contoh program Quick sort pada C++:

1. Program Quick Sort pada C++

#include <iostream>
#define n 20

using namespace std;

int Ar[n];
void quickSort(int arr[], int left, int right);
int main()
{
    int jumlahBil=5;
    cout<<"Masukkan jumlah bilangan dalam arry [Maksimal 20]"<<endl;
    cin>>jumlahBil;
    int Ar[jumlahBil];

    for(int i=0; i<jumlahBil;i++)
    {
        cout<<"Bilangan ke-"<< i+1 << endl;
        cin>>Ar[i];
    }

    quickSort(Ar,0,jumlahBil-1 );
    cout<<"Data yang telah diurutkan"<<endl;

    for(int i=0; i<jumlahBil;i++)
    {
        cout<<Ar[i]<<"\n";
    }
}

void quickSort(int arr[], int left, int right)
{
    int i = left, j = right;
    int tmp;
    int pivot = arr[(left + right) / 2];
    while (i <= j)
    {
        while (arr[i] < pivot)
        i++;
        while (arr[j] > pivot)
        j--;
        if (i <= j)
        {
            tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
            i++;
            j--;
        }
    };

    if (left < j)

    quickSort(arr, left, j);

    if (i < right)

    quickSort(arr, i, right);
}

2. Hasil Running Quick Sort


C. Insert Sort
            Insert Sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemusian mengecek elemen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan. Karena algoritma ini bekerja dengan membandingkan elemen-elemen data yang akan diurutkan, algoritma ini termasuk pula dalam comprasion-based sort. Ide dasar dari algoritma Insertion Sort ini adalah mencari tempat yang “tepat” untuk setiap elemen array, dengan cara sequential search. Proses ini kemudian menyisipkan sebuah elemen array yang diproses ke tempatnya yang seharusnya. Proses dilakukan sebanyak N-1 tahapan (dalam sorting disebut sebagai "pass"), dengan indeks dimulai dari 0. Proses pengurutan dengan menggunakan algoritma Insertion Sort dilakukan dengan cara membandingkan data ke-i (dimana i dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya.

1. Program Insert Sort pada C++

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

using namespace std;

int data[10], data2[10];
int n;
void tukar(int a, int b)
{
    int t;
    t = data[b];
    data[b] = data[a];
    data[a] = t;
}

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;
    }
}

int main()
{
    cout << "Masukkan Jumlah Data : "; cin >>n;
    for(int i=1; i<=n; i++)
    {
        cout << "Masukkan data ke "<< i <<" : "; cin >> data[i];
        data2[i]=data[i];
    }
    insertion_sort();
    cout << "\n Data setelah di Sort : ";
    for(int i=1; i<=n; i++)
    {
        cout << " "<<data[i];
    }
    getch();
}

2. Hasil Running Insert Sort



D. Marge Sort
            Marge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma program marge sort c++ ini ditemukan oleh John von Neumann tepat pada tahun 1945.

1. Program Marge Sort
#include <iostream>
#include <conio.h>
using namespace std;

int a[50];
void merge(int,int,int);
void merge_sort(int low,int high)
{
     int mid;
     if(low<high)
    {
          mid=(low+high)/2;
          merge_sort(low,mid);
          merge_sort(mid+1,high);
          merge(low,mid,high);
    }
}

void merge(int low,int mid,int high)
{
     int h,i,j,b[50],k;
     h=low;
     i=low;
     j=mid+1;
     while((h<=mid)&&(j<=high))
    {
          if(a[h]<=a[j])
          {
           b[i]=a[h]; h++;
          }
          else
        {
        b[i]=a[j]; j++;
        } i++;
    }
 if(h>mid)
{
    for(k=j;k<=high;k++)
  {
   b[i]=a[k]; i++;
  }
}

 else
{
  for(k=h;k<=mid;k++)
  {
   b[i]=a[k]; i++;
  }
}

 for(k=low;k<=high;k++)
  a[k]=b[k];
}
main()
{
     int num,i;
     cout<<"Hardifal "<<endl;
     cout<<"---------------------------"<<endl;
     cout<<"    ALGORITMA MERGE SORT C++ "<<endl;
     cout<<"---------------------------"<<endl;
     cout<<endl;
     cout<<"Masukkan Banyak Bilangan: ";cin>>num;
     cout<<endl;
     cout<<"Sekarang masukkan "<< num <<" Bilangan yang ingin Diurutkan :"<<endl;

    for(i=1;i<=num;i++)
    {
        cout<<"Bilangan ke-"<<i<<" ";cin>>a[i] ;
    }

     merge_sort(1,num);
     cout<<endl;
     cout<<"Hasil akhir pengurutan :"<<endl;
     cout<<endl;

    for(i=1;i<=num;i++)
  cout<<a[i]<<" ";
 cout<<endl<<endl<<endl<<endl;
 }

2. Hasil Running Marge Sort


E. Selection Sort
            Selection sort pencarian elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan, selection sort dapat membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka di catat posisinya dan kemudian ditukar.

Pengurutan data dalam struktur data sangat penting untuk data yang bertipe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) pengurutan (sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.

1. Program Selection Sort pada C++


#include<iostream>
using namespace std;

void seleksi(int data[],int n);/*prototipe fungsi*/
int main()
{
    int i;
    int n=9;//index terbesar
    int data[]={20,10,32,100,60,12,70,25,45,65};

    cout<<"Sebelum di urutkan :"<<endl;
    for(i=0;i<n;i++)
        cout<<data[i]<<" ";
        cout<<endl;

    cout<<"___________________________________________________"<<endl;
    seleksi (data, n);
    cout<<"Setelah diurutkan"<<endl;
    for(i=0;i<=n;i++)
        cout<<data[i]<<" ";
        cout<<endl;
}
void seleksi(int Array1[],int n)
{
    int i,j,tmp,imaxs;
    for(i=n;i>=1;i--)
    {
        imaxs=0;
        for(j=1;j<=i;j++)
        {
            if (Array1[j]>Array1[imaxs])
            imaxs=j;
        }
        tmp=Array1[imaxs];
        Array1[imaxs]=Array1[i];
        Array1[i]=tmp;
    }
}
2. Hasil Running Selection Sort



Sumber:

Koneksi Database Buku

1.       Aktifkan aplikasi xampp terlebih dahulu. 2.       Masuklah pada browser lalu ke localhost/phpmyadmin , kemudian buat lah sebua...