Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.


ISI

1          Open Source

Open source adalah software yang membuka membebaskan source codenya untuk dilihat orang lain dan membiarkan orang lain mengetahui cara kerja software tersebut. Orang lain juga bisa memperbaiki kelemahan yang ada pada software tersebut. Dan salah satu keunggulannya adalah bahwa Open source dapat diperoleh dan digunakan secara gratis tanpa perlu membayar lisensi. Salah satu open source software yang terkenal yaitu Linux. Mozilla Firefox, WordPress dan masih banyak lagi.

2          Freeware

Freeware adalah suatu software atau aplikasi yang dapat digunakan oleh semua orang tanpa membayar.

3          GPL( General Public License)

GPL  yaitu sebuah lembaga yang menangani suatu perlindungan terhadap software yang bersifat Open Source. Bisa juga dikatakan GPL adalah lembaga yang melindungi HAKI (Hak Atas Kekayaan Intelektual) dari pembuat software.

GPL didirikan oleh FSF (Free Software Foundation ) yang merupakan suatu lembaga yang menyediakan wadah/tempat bagi para programmer handal yang membuat software yang bersifat Free dan Open Source. Dalam perjanjian GPL ini seseorang boleh mengkopi software tersebut, mengubah, memodifikasi, dan mendistribusikan kembali software tersebut dengan syarat bahwa nama penulis pertama dari program

CMS adalah suatu sistem yang di gunakan untuk mempermudah dalam memfasilitasi pembuatan, pengelolaan, pembaharuan,  dan publikasi content pada sebuah situs website ataupun blog.

Dengan adanya content management system (cms) yang terintegrasi pada suatu website atau blog, seseorang dalam melakukan pengelolaan situs yang dinamis beserta isi data content nya yang berupa informasi dalam bentuk teks, grafik, images, video maupun dalam format lainnya semakin di permudah bahkan untuk orang awan sekalipun dapat mengelolah suatu website ataupun blog beserta isi content nya dengan sangat cepat dan mudah tanpa harus mempunyai keahlian khusus tentang bahasa programming HTMLPHP, dan lainnya.

5          Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis.

Sistem kerja komputer yang terdiri dari brainware, hardware, dan software. Tanpa salah satu dari ketiga sistem tersebut, komputer tidak akan berguna. Software terbangun atas susunan program dan syntax (cara penulisan/pembuatan program). Untuk menyusun program atau  syntax, diperlukannya langkah-langkah yang sistematis dan logis untuk dapat menyelesaikan masalah atau tujuan dalam proses pembuatan suatu software. Maka,Algoritma berperan penting dalam penyusunan program atau syntax  tersebut,selain untuk komputer algoritma juga sering digunakan dalam kehidupan sehari-hari misalnya langkah-langkah membuat kue bolu,langkah-langkah mendapatkan IPK 4 dan lain sebagainya.

5.1      Algoritma Pencarian (searching)

   Pencarian adalah langkah –langka untuk menemukan nilai(data) tertentu didalam sekumpulan data yang bertipe sama.Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful).

·      Macam-macam Algoritma Pencarian (Searching)

5.1.1  Pencarian sekuensial (Sequential searching)

·           Pencarian Sekuensial (sequential searching) atau pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling sederhana. 

Contoh kode algoritma pencarian menggunakan Dev C++:

#include <stdio.h>

#include <stdlib.h>

main(){

int data[10] = {1,2,3,4,5,6,7,8,9,10};

int cari;

int flag=0;

printf("masukkan data yang ingin dicari = ");

scanf("%d",&cari);

for(int i=0;i<8;i++){

if(data[i] == cari) flag=1;

}

if(flag==1) printf("Data ada\n");

else printf("Data tidak ada\n");

system("PAUSE");

return(0);

}

   Tampilan program :

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

Catatan :Kode program diatas digunakan untuk mencari angka/ bilangan yang diinginkan oleh user dengan kondisi jika angka yang dicari lebih dari 0 dan kurang dari 9 maka di program akan tampil “Data ada” ,jika angka yang dicari kurang dari satu atau lebih dari 8 maka di program akan tampil”Data tidak ada”.

Dari program diatas, terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array data satu persatu berdasarkan indeksnya.

·         Program menggunakan sebuah variabel flag yang berguna untuk menadai ada atau tidaknya data yang dicari dalam array data.  Hanya bernilai 0 atau 1.

·         Flag pertama kali diinisialiasasi dengan nilai 0.

·         Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0.

·         Semua elemen array data akan dibandingkan satu persatu dengan data yang dicari dan diinputkan oleh user.

5.1.2 Pencarian Beruntun dengan Sentinel

Jika pencarian bertujuan untuk menambahkan elemen baru setelah elemen terakhir larik, maka terdapat sebuah varian dari metode pencarian beruntun yang mangkus. Nilai x yang akan dicari sengaja ditambahkan terlebih dahulu. Data yang ditambahkan setelah elemen terakhir larik ini disebut sentinel.

o   Algoritma

Procedure SeqSearchWithSentinel(input L: LarikInt, input n: integer, input x: integer, output idx: integer)

DEKLARASI     I: integer

ALGORITMA

L[n+1]  ← X   {sentinel}

I ← 1

While (L[i] ≠ x) do

                 I ← i+1

Endwhile

If idx = n+1 then

                 idx  ← -1

else

                 idx ← 1

endif

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.
·                 Contoh program

#include <stdio.h>

#include <conio.h>

void main(){

 int data[7] = {3,12,9,-4,21,6};

 int cari,i;

printf("masukkan data yang ingin dicari = ");

scanf("%d",&cari);

data[6] = cari;

   i=0;

 while(data[i] != cari) i++;

 if(i<6) printf("Data ada!\n"); else printf("Data tidak ada!\n");

getch;

return 1;

}

5.1.3   Pencarian Biner (binary search)

Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. Data yang disimpan di dalam larik harus sudah terurut.

BST adalah binary tree yang mana data di dalamnya tersusun sedemikian rupa sehingga pada setiap subtree di dalamnya berlaku:

setiap data di subtree kiri < data root subtree < setiap data di subtree kanan.

o   Algoritma

class BinaryNode {

      void printInOrder( )

      {

              if( left != null )

           left.printInOrder( );                               // Left

              System.out.println( element );            // Node

              if( right != null )

               right.printInOrder( );                          // Right

   }

}

class BinaryTree {

   public void printInOrder( )

   {

              if( root != null )

              root.printInOrder( );

   }

}

Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :

  1. mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.
  2. Kemudian data yang dicari dibandingkan dengan data tengah.
  3. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.
  4. Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.
  5. Demikian seterusnya sampai data tengah sama dengan yang dicari.

Algoritma pencarian biner dapat dituliskan sebagai berikut : 

  1.  L  ← 0
  2. R ← N - 1
  3. ketemu ← false
  4. Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8   
  5. m ← (L + R) / 2 83
  6.  Jika (Data[m] = x) maka ketemu ← true
  7.  Jika (x < Data[m]) maka R ← m – 1 Jika (x > Data[m]) maka L  ← m + 1
  8. Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.
Contoh program

int binary_search(int cari){

int l,r,m;

 l = 0;

   r = n-1;

 int ktm = 0;

 while(l<=r && ktm==0){

                m = (l+r)/2;

               if(data[m] == cari) ktm=1;

               else if (cari < data[m]) r=m-1;

               else l=m+1; {

 if(ktm==1) return 1; else return 0;

}         

}

}

5.2 Algoritma Sorting

·         Macam-macam Algoritma Pengurutan (Sorting)

5.2.1 Bouble Sort

Proses yang terjadi pada pengurutan dengan metode Bubble sort adalah selalu membandingkan dua data yang berdekatan. Apabila data yang berada disebelah kanannya bernolai lebih kecil, maka ditukarkan sampai semua data terurut sehingga memunculkan data terbesar diposisi paling akhir. Berikut ini ilustrasi dari bubble sort.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

Dan berikut ini contoh pengimplementasian metode bubble sort dalam bentuk program.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

#include <stdio.h>

int main()

{

  int array[100000], n, i, j, swap;

  printf("Berapa Data Yang Diinginkan? ");

  scanf("%d", &n);

  for (i = 0; i < n; i++)

  {

  printf("Data ke %d : ",i+1);

        scanf("%d", &array[i]);

  }

  for (i = 0 ; i < ( n - 1 ); i++)

  {

    for (j = 0 ; j < n - i - 1; j++)

    {

      if (array[j] > array[j+1])

      {

        swap       = array[j];

        array[j]   = array[j+1];

        array[j+1] = swap;

      }

    }

  }

  printf("Data Setelah diurutkan:n");

  for ( i = 0 ; i < n ; i++ )

  {

     printf("%d\n", array[i]);

  }

  return 0;

}

Ketika dijalanakan anda akan dimintai mengisi berapa data yang diinginkan, kemudian isi data tersebut persatu, program diatas dirancang untuk menerima 100000 inputan data/bilangan.

5.2.2 Selection Sort

 adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.

Proses pengurutan menggunakan metode selection sort secara terurut nik adalah sebagai berikut:

  1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. kemudian ditukar posisinya dengan data pertama.
  2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua.
  3. Mencari data terkecil dari data ketiga sam[ai data terakhir, kemudian ditukar posisimya dengan data ketiga.
  4. 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.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.
#include <stdio.h> int main() {    int data[100], n, i, j, position, swap;    printf("Masukkan Jumlah data : ");    scanf("%d", &n);    printf("nMasukkan %d datan", n);    for ( i=0 ; i<n ; i++ )    {              printf("Data ke %d : ", i+1);       scanf("%d", &data[i]);    }    for ( i=0 ; i<(n-1) ; i++ )    {       position=i;       for (j=i+1; j<n ; j++)       {          if ( data[position] > data[j] )             position=j;       }       if ( position != i )       {          swap = data[i];          data[i] = data[position];          data[position] = swap;       }    }    printf("Data setelah diurutkan:n");    for ( i=0 ; i<n ; i++ )    {       printf("%dt", data[i]);    }    return 0; }

5.2.3.Insertion Sort

Proses yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort adalah dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai. Data pada posisi pertama diandaikan memang sudah pada tempatnya. Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Agar lebih mudah dalam memahaminya silahkan perhatikan ilustrasi gambar berikut ini:

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.

Tulislah algoritma dan program c++ untuk pencarian binary search dengan data yang sudah terurut menurun.
Contoh program

#include <stdio.h>

#include <stdlib.h>

int main()

{

  int n, data[1000], i, j, t;

  printf("Masukkan Jumlah data : ");

  scanf("%d", &n);

   for (i = 0; i < n; i++)

   {

  data[i]=rand() % 100000 + 1;

   }

  for (i = 1 ; i <= n - 1; i++) {

    j = i;

    while ( j > 0 && data[j] < data[j-1]) {

      t          = data[j];

      data[j]   = data[j-1];

      data[j-1] = t;

      j--;

    }

  }

  printf("Data setelah diurutkan:n");

  for (i = 0; i <= n - 1; i++) {

    printf("%dt", data[i]);

  }

  return 0;

}

Konsep dari program diatas, pengguna akan diminta memasukkan jumlah data yang ingin dirandom sebanyak n buah bilangan. Kebetulan ceritanya diatas saya memasukan nilai 27, yang berarti akan dirandom data sebanyak 27 angka dari angka 1 - dengan n. setelah dirandom, data/angka tersebut disimpan dalam sebuah array. pada contoh diatas, bilangan yang sudah dirandom disimpan pada array data[i].


Page 2