Rabu, 08 Mei 2019

Searching


MATERI

            Sebelum memasuki materi tentang sequential search dan binary search, kiranya perlu untuk mengetahui apa itu search dalam bahasa pemrograman C++. Search adalah mencari data yang dibutuhkan, search dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memori komputer. Dalam kehidupan sehari-hari juga sering melakukan kegiatan searching seperti mencari data atau informasi yang ada dalam internet. Ada beberapa metode yang dapat digunakan untuk search, antara lain:

A. Sequential Search
Sequential Search dalam C++ juga disebut pencarian linear. Teknik pencarian ini sangat sederhana, untuk melakukan teknik ini pengguna mulai loop dari indeks nol array ke indeks terakhir array. Dimulai dari indeks pertama dan membandingkan nilai yang diperlukan dengan nilai pertama.
Jika nilai yang diperlukan ditemukan, maka akan menunjukkan hasil sebaliknya membandingkan nilai indeks berikutnya dan akan berlanjut sampai pada nilai yang diperlukan ditemukan atau loop selesai tanpa menemukan nilai apa pun.

B. Binary Search
            Binary Searh adalah algoritma yang digunakan untuk mencari elemen dalam array yang diurutkan. Dalam algoritma ini elemen yang ditargetkan dibandingkan dengan elemen tengah. Jika kedua elemen sama maka posisi elemen tengah dikembalikan dan karenanya elemen yang ditargetkan ditemukan.

LISTING PROGRAM


A. Sequential Search

1. Listing Program 


2. Hasil Running Sequential Search

Jika ditemukan:

Jika tidak ditemukan:


3. Flowchart Sequential Searh


B. Binary Search
1. Listing Program



 2. Hasil Running Binary Search
Jika data ditemukan:

Jika data tidak ditemukan:


3. Flowchart Binary Search


DAFTAR PUSTAKA

Binary Search. (2018, Agustus 5). Retrieved from www.thecrazyprogrammer.com
Sequential Search in C++ with examples. (2014, Juni 9). Retrieved from www.hellgeeks.com/sequential-search/

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...