Selasa, 21 Mei 2019

makalah searching


Kata Pengantar


            Puji syukur alhamdulillah kami panjatkan ke hadirat Tuhan Yang Maha Esa, karena telah melimpahkan rahmat-Nya berupa kesempatan dan pengetahuan sehingga makalah ini bisa selesai pada waktunya.
Terima kasih juga kami ucapkan kepada teman-teman yang telah berkontribusi dengan memberikan ide-idenya sehingga makalah ini bisa disusun dengan baik dan rapi.
Kami berharap semoga makalah ini bisa menambah pengetahuan para pembaca. Namun terlepas dari itu, kami memahami bahwa makalah ini masih jauh dari kata sempurna, sehingga kami sangat mengharapkan kritik serta saran yang bersifat membangun demi terciptanya makalah selanjutnya yang lebih baik lagi.

Yogyakarta, 13 Mei 2019.

       Penulis








Daftar Isi
Kata Pengantar. 2
BAB I 4
PENDAHULUAN.. 4
A.     Latar Belakang. 4
B.      Rumusan Masalah. 4
C.      Tujuan Penulisan. 4
BAB II 5
PEMBAHASAN.. 5
A.     Pengertian Searching. 5
B.      Metode – Metode Searching. 5
1.      Squential Search. 5
2.      Binary Search. 7
BAB III 12
PENUTUP. 12
A.     KESIMPULAN.. 12
DAFTAR PUSTAKA.. 13






BAB I

PENDAHULUAN


A.   Latar Belakang

Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memory komputer. Dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada dalam internet.
Pencarian di perlukan untuk mencari informasi khusus dari tabel pada saat lokasi yang pasti dari informasi tersebut sebelumnya tidak diketahui. Pencarian selalu dinyatakan dengan referensi pada adanya sekolompok data yang tersimpan secara terorganisasi, kelompok data tersebut kita sebut tabel.


B.   Rumusan Masalah

Dalam penulisan makalah ini, penulis merumuskan beberapa masalah diantaranya sebagai berikut:
1.      Apakah Pengertian Searching?
2.      Apa Saja Metode Metode Searching?



C.   Tujuan Penulisan

      Adapun kami menulis makalah ini dengan tujuan  :
1.      Untuk Memahami Sarching
2.      Untuk Mengetahui Metode Metode Searching







BAB II

PEMBAHASAN

A.   Pengertian Searching


            Pencarian / search merupakan suatu proses dimana mencari data pada suatu deretan obyek.
Seperti halnya pengurutan / sorting, algoritma pencarian juga macam – macam, beberapa di antaranya adalah :
Ø  Squential search
Ø  Binary search

B.   Metode – Metode Searching

1.      Squential Search

Salah satu metode pencarian yang sering di gunakan dan merupakan metode paling mudah adalah sequential search, yaitu membandingkan satupersatu antara data yang di cari dengan data yang ada pada array dari awal sampai akhir atau data yang di cari ditemukan.
Algoritma :
·         Masukkan array
·         Ketahui jumlah emelen(n), mulai dari data pertama, i=1;
·         bandingkan array ke-I dengan data yang dicari. Jika tidak sama, maka lanjutkan dengan menambahkan i=i+1
·         jika i>jumlah elemen array(n), maka pencarian dihentikan dan dianggap tidak ketemu dan selesai. Jika i<=jumlah elemen array, maka ulangi dari langkah 3
contoh :

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

int main(){
            int a[10]={1,2,3,4,5,6,7,8,9,0};
            int cari,n,t;
            cout<<"0,1,2,3,4,5,6,7,8,9"<<endl;
            cout<<"Pilihlah bilangan bulat di atas : ";
            cin>>cari;
            for(n=0; n<10; n++){
                        if(a[n]==cari){
                                    t=1;
                                    break;
                        }
            }
            if(t==1){
                        cout<<"Data yg anda cari berada pada data ke : "<<n;
            }
            else{
                        cout<<"data yg anda cari tidak ada";
            }
}

2.      Binary Search

Secara umum untuk mencari suatu nilai di array yang tidak urut, diperlukan pencarian dengan cara membandingkan satu persatu. Sampai nilai yang dicari ketemu. Apabila nilai yang di cari tidak di temukan di dalam array, maka secara otomatis semua elemen array sudah dibandingkan satu persatu.
Algoritma:
·         Masukkan array
·         Urutkan array
·         Ketahui jumlah elemen array(n), batas bawah(bb), batas atas(ba), dan titik tengah (tt), yang dihitung dengan cara bb=1, ba=jumlah elemen array, tt=int((ba+bb)/2)
·         Cari elemen tengah tengah(tt)
·         Jika nilai element t sama dengan yang dicari, maka algoritma dihentikan dan dinyatakan pencarian ketemu dan selesai
·         jika tidak sama, ada 2 kemungkinan :
o  jika nilai yang di cari < nilai elemen tengah, ini menunjukkan bahwa nilai yang dicari jika ada pasti berada di bawah elemen tengah, sehingga pencarian dipersempit. Ba=tt-1
o  jika nilai yang dicari > nilai elemen tengah, ini menunjukkan bahwa nilai yang dicari jika ada pasti berada di setelah elemen tengah, sehingga pencarian dipersempit. Bb=tt+1
·         ada 3 kriteria :
o  jika bb>ba, maka pencarian dihentikan dan dinyatakan tidak ketemu dan selesai
o  jika bb<=ba, ulangi dari langkah 3.
Contoh program :
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;

class ArrayTerurut{
          private:
                      vector<double>v;
                      int jumElemen;
                     
          public:
                      ArrayTerurut(int max){
                                  v.resize(max);
                                  jumElemen=0;
                      }
                      int bacaUkuran()//Menghasilkan jumlah elemen
                      {return jumElemen;}
                      int cari(double kunciPencarian){
                                  return cariRekursif(kunciPencarian,0,jumElemen-1);
                      }
                      int cariRekursif(double kunciPencarian, int batasBawah, int batasAtas)
                      {
                                  int posSkrg;
                                  posSkrg=(batasBawah+batasAtas)/2;
                                 
                                  if(v[posSkrg]==kunciPencarian){
                                              return posSkrg;
                                  }
                                  else if(batasBawah>batasAtas){
                                              return jumElemen;
                                  }
                                  else{
                                              if(v[posSkrg]<kunciPencarian)//ada di potongan atas
                                              {
                                                          return cariRekursif(kunciPencarian,posSkrg+1,batasAtas);
                                              }
                                              else{
                                                          return cariRekursif(kunciPencarian,batasBawah,posSkrg-1);
                                              }
                                  }
                      }
                      void sisip(double nilai)//meningkatkan elemen ke dalam array
                      {
                                  int j;
                                  for(j=0; j<jumElemen; j++){
                                              if(v[j]>nilai)//pencarian linier
                                              {
                                                          break;
                                              }
                                              for(int k=jumElemen; k>j; k--){
                                                          v[k]=v[k-1];
                                              }
                                              v[j]=nilai;
                                  }
                                  jumElemen++;
                      }
                      void tampil(){
                                  for(int j=0; j<jumElemen; j++){
                                              cout<<v[j]<<" ";
                                  }
                                  cout<<endl;
                      }
};
int main(){
          int ukuranMaks=100;//ukuran array
          ArrayTerurut arr(ukuranMaks);//array terurut
          arr.sisip(72);//menyisipkan item - item
          arr.sisip(90);
          arr.sisip(45);
          arr.sisip(126);
          arr.sisip(54);
          arr.sisip(99);
          arr.sisip(144);
          arr.sisip(27);
          arr.sisip(135);
          arr.sisip(81);
          arr.sisip(18);
          arr.sisip(108);
          arr.sisip(9);
          arr.sisip(117);
          arr.sisip(63);
          arr.sisip(36);
                      arr.tampil();//menampilkan array
                      int kunciPencarian=117;//mencari item dengan nilai 117
                      if(arr.cari(kunciPencarian)==arr.bacaUkuran()){
                                  cout<<"Menemukan"<<kunciPencarian<<endl;
                      }
                      else{
                                  cout<<"Tidak ditemukan"<<kunciPencarian<<endl;
                      }
                      getch();
                      return 0;
}



BAB III

PENUTUP

A.   KESIMPULAN


Searching atau pengurutan merupakan metode pencarian data dalam suatu array, baik yang sudah terurut maupun yang belum terurut.
·         Pencarian Sekuensial :
a. Kelebihannya :
- Relatif lebih cepat dan efisien untuk data yang terbatas
- Algoritma sederhana
b. Kekuranganya :
- Kurang cepat untuk data dalam jumlah besar
- Beban komputasi cenderung lebih besar
· Pencarian Biner :
a. Kelebihannya :
- Untuk data dalam jumlah besar, waktu searching lebih cepat
- Beban komputasi lebih kecil
b. Kekuranganya :
- Data harus sudah di-sorting lebih dulu ( dalam keadaan terurut )










DAFTAR PUSTAKA


1.     Edyshared.2013. metode searching sequential search  : http://edyshared.blogspot.com/2013/05/metode-searching-sequential-search.html
2.     Abdim.2016. sorting dan searching data dalam c++ : https://abdim.blogspot.com/2016/04/sorting-dan-searching-data-dalam-c.html






Tidak ada komentar:

Posting Komentar