0% menganggap dokumen ini bermanfaat (0 suara)
362 tayangan39 halaman

Algoritma Searching dalam Struktur Data

Diunggah oleh

Yasinta Shabilla
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
362 tayangan39 halaman

Algoritma Searching dalam Struktur Data

Diunggah oleh

Yasinta Shabilla
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

MAKALAH

SEARCHING

NNZZZZ

OLEH :

NAMA : LUSIANA AURIZA LUBIS


NIM : 2023903430020
KELAS : TRKJ 1B
PROGRAM STUDI : Teknologi Rekayasa Komputer Jaringan
DOSEN PEMBIMBING : Indrawati, SST.M

JURUSAN TEKNOLOGI INFORMASI DAN KOMPUTER


PRODI TEKNOLOGI REKAYASA KOMPUTER DAN JARINGAN
TAHUN AJARAN 2023/2024
DAFTAR ISI

DAFTAR ISI.............................................................................................. ii

BAB I PENDAHULUAN.......................................................................... 2
1.1 Sejarah Struktur Data...................................................................... 2

BAB II PEMBAHASAN........................................................................... 14
2.1 Pengertian Searching...................................................................... 14
2.2 Macam - Macam Algoritma Searching........................................... 18
2.3 Contoh Program Searching............................................................. 23

BAB III PENUTUP.................................................................................... 37


3.1 Kesimpulan..................................................................................... 37

DAFTAR PUSTAKA................................................................................ 38

ii
BAB I
PENDAHULUAN

Pada pembuatan makalah kali ini kami akan membahas tentang Pencarian
(Searching), dengaSSn metode Sequential Searching. Sequential Search
(pencarian beruntun) menggunakan prinsip sebagai berikut, data yang ada di
bandingkan satu persatu secara berurutan dengan yang dicari sampai data tersebut
ditemukan atau tidak di temukan.

Pencarian (searching) merupakan proses yang sering digunakan dalam


pengelolaan data. Proses pencarian adalah menemukan nilai (data) tertentu di
dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe
bentukan). Data dapat disimpan secara temporer dalam memori utama atau
disimpan secara permanen di dalam memori sekunder (tape atau disk). Didalam
memori utama , struktur penyimpanan data yang umum adalah brupa larik atau
tabel (array), sedangkan di dalam memori sekunder berupa arsip (file). Algoritma
pencarian yang akan dibicarakan dimulai dengan algoritma pencarian yang paling
sederhana yaitu pencarian beruntun atau Sequential Search.

 Pengertian searchig.
a. Pencarian sekuensial.

 Pencarian beruntun pada larik tidak terurut (acak)


 Pencarian beruntun pada larik terurut
b. Pencarian biner.

1
1.1 Sejarah Struktur Data

Menurut Liang Gie, Struktur Data merupakan hal, peristiwa atau


kenyataan apapun yang mengandung suatu pengetahuan untuk dijadikan dasar
yang berguna untuk penyusunan keterangan, pembuatan kesimpulan atau
penerapan kesimpulan.

1. Definisi Struktur Data

Struktur data adalah cara menyimpan atau mempresentasikan data didalam


komputer agar bisa dipakai secara efisien sehingga data dapat digunakan dengan
efisien, termasuk operasi – operasi didalamnya.

2. Sifat Struktur Data

a.) Struktur Data Sederhana

 Larik (Array)

Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan
tertentu yang menggunakan sebuah nama yang sama.

3. Rekaman (Record)

Adalah sebuah rekaman yang disusun oleh beberapa field. Tiap field berisi
data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk
menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya.

b.) Struktur Data Majemuk

1. Linier

1.a. Tumpukan (Stack)

2
Stack merupakan sebuah koleksi objek yang menggunakan prinsip LIFO
(Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali
keluar dari stack tersebut.

1.b. Antrian (Queue)

Queue adalah sekumpulan data yang mana penambahan elemen hanya bisa
dilakukan pada suatu ujung disebut dengan sisi belakang, dan penghapusan
(pengambilan elemen) dilakukan lewat sisi depan.

1.c. Daftar (List)

List merupakan struktur data yang terdiri atas rangkaian elemen sejenis
yang saling berhubungan.

2.a. Pohon Biner (Binary Tree)


Binary Tree merupakan salat satu bentuk struktur data tidak linier Yang
menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara
elemen-elemen.

2.b. Graf (Graph)

Graph adalah kumpulan noktah (simpul) di dalam bidang dua dimensi


yang dihubungkan dengan sekumpulan garis (sisi).

4. Tahap Pembuatan Struktur Data

Untuk membuat menjadi struktur data, kita harus melakukan dulu aktivitas
terhadap objek data, yaitu :

3
a. Mendeskripsikan kumpulan operasi sah yang diterapkan ke elemen-elemen
objek data.
b. Menunjukan mekanisme kerja operasi-operasi.

4.a Tahap Pertama (Spesifikasi)

Pendeskripsian / spesifikasi struktur data menyatakan apa yang dapat


dilakukan struktur data, bukan cara penerapannya. Pendeskripsian ini melibatkan
level logic sehingga dapat digunakan konvensi matematika untuk menyatakan
sifat-sifat struktur data yang dikehendaki. Spesifikasi dapat dilakukan dengan dua
cara, yaitu formal dan informal.

4.b Tahap Kedua (Implementasi)

Implementasi struktur data adalah proses pendefinisian tipe data abstrak


sehingga semua operasi dapat dieksekusi computer. Implementasi struktur
penyinpanan item-item data serta algoritma-algoritma untuk implementasi
operasi-operasi sehingga menjamin terpenuhinya karakteristik struktur data, relasi
item-item data atau invariant pada struktur data itu.

4.c Tahap Ketiga (Pemrograman)

Pemrograman terstruktur adalah penerjemahan menjadi pernyataan di


bahasa pemrograman tertentu. Prosesnya terdiri dari :

a. Deklarasi yang mendefinisikan objek-objek data dan hubungannya


b. Pembuatan prosedur / rutin untuk operasi-operasi dasar yang menjaga
invariant pada struktur data itu.

4
 STRUKTUR DATA

Dalam istilah ilmu komputer, sebuah struktur data adalah cara


penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan
komputer sehingga data tersebut dapat digunakan secara efisien.

Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi
kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) ataupun
kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak
oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan
catatan (record).

Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang
lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada
kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat
diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan)
atau untuk pengolah kata (word processor) yang kolomnya berubah secara
dinamis.

Contoh struktur data dapat dilihat pada berkas-berkas lembarsebar


(spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat
(dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan
struktur data. Berikut ini adalah macam-macam variabel yang terdapat pada
struktur data , yaitu linked list, stack, queue, tree, binary tree.

 LINKED LIST

Atau dikenal juga dengan sebutan senarai berantai adalah struktur data
yang terdiri dari urutan record data dimana setiap record memiliki field yang
menyimpan alamat/referensi dari record selanjutnya (dalam urutan). Elemen data
yang dihubungkan dengan link pada Linked List disebut Node. Biasanya didalam
suatu linked list, terdapat istilah head dan tail. Head adalah elemen yang berada
pada posisi pertama dalam suatu linked list dan Tail adalah elemen yang berada

5
pada posisi terakhir dalam suatu linked list Ada beberapa macam Linked List,
yaitu :

1. Single Linked List


2. Double Linked List
3. Circular Linked List
4. Multiple Linked List

 Single Linked List

Single Linked List merupakan suatu linked list yang hanya memiliki satu
variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya.
Biasanya field pada tail menunjuk ke NULL.

 Double Linked List

Double Linked List merupakan suatu linked list yang memiliki dua
variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer
yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke
NULL.

6
 Circular Linked List

Circular Linked List merupakan suatu linked list dimana tail (node
terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk
NULL.

Ada 2 jenis Circular Linked List, yaitu :

Multiple Linked List merupakan suatu linked list yang memiliki lebih dar 2 buat
variabel pointer. contoh :

7
 Linked list

Merupakan suatu cara non-sekuensial yang digunakan untuk


merepresentasikan suatu data.

-Kerugiannya adalah :

1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked
list. Keuntungannya adalah : 1.) Jenis data yang berbeda dapat di-link.

3. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-


nya saja.

 STACK (TUMPUKAN)

Yaitu kumpulan elemen-elemen data yang disimpan dalam satu lajur


linear. Kumpulan elemen-elemen data hanya boleh diakses pada satu lokasi saja
yaitu posisi ATAS (TOP) tumpukan. Tumpukan digunakan dalam algoritma
pengimbas (parsing), algoritma penilaian (evaluation) dan algoritma penjajahan
balik (backtrack). Elemenelemen di dalam tumpukan dapat bertipe integer, real,

8
record dalam bentuk sederhana atau terstruktur. Stack adalah suatu tumpukan dari
benda.

Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir
masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah Push
dan Pop. Operasi – operasi yang dapat diterapkan adalah sebagai berikut :

1. Push : digunakan untuk menembah item pada Stack pada Tumpukan paling
atas.

2. Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.

3. Clear : digunakan untuk mengosongkan Stack.

4. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.

5. MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen


dihapus.

6. IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.

7. Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.

-Kelebihannya adalah : Penambahan dan penghapusan data dapat dilakukan


dengan cepat, yaitu 0 (1),Selama memori masih tersedia, penambahan data bisa
terus dilakukan. Dengan demikian tidak ada kekhawatiran terjadinya stack
overflow.

-Kekurangannya adalah : Setiap sel tidak hanya menyimpan value saja, melainkan
juga pointer ke sel berikutnya.

Hal ini menyebabkan implementasi stack memakai linked list akan


memerlukan memori yang lebih banyak dari pada kalau di implementasikan
dengan Array.

Tiap elemen pada linked list hanya bisa diakses dengan cara sekuensial,
sehingga lambat, yaitu 0 (n).

9
 QUEUE

Queue merupakan suatu struktur data linear. Konsepnya hampir sama


dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada
ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan
penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam
antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.

Queue (antrian) adalah struktur data dimana data yang pertama kali
dimasukkan adalah data yang pertama kali bisa dihapus. Atau bisa juga disebut
dengan struktur data yang menggunakan mekanisme FIFO (First In First Out).

Macam-macam operasi yang ada di queue antara lain :

1. Create: Untuk menciptakan dan menginisialisasi Queue dengan cara membuat


Head dan Tail = -1

2. Isempty: Untuk memriksa apakah queue kosong

3. Isfull: Untuk memriksa apakah queue sudah penuh 4. Enqueue: Untuk


menambahkan item pada posisi paling belakang

5. Dequeue: Untuk menghapus item dari posisi paling depan

6. Clear: Untuk mengosongkan queue Kelebihannya adalah : Data yang pertama


masuk maka akan pertama dilayani Kekurangannya adalah : Data yang terakhir
masuk, bila waktu pelayanan habis kemungkinan bisa tidak dilayani.

 TREE

Definisi Tree adalah suatu aturan atau cara untuk menghubungkan


komputer yang satu dengan komputer yang lain sehingga membentuk suatu
jaringan. Topologi jaringan juga dapat di definisikan sebagai gambaran secara

10
fisikdari pola hubungan antar komponen jaringan yang meliputi
server,workstation,hub dan perkabelan.

-Topologi Jaringan di bagi 2 yaitu :

1. Physical : Merupakan gambaran fisik dari hubungan antara perangkat


(komputer,server,hub,swich dan kabel jaringan) yang membentuk suatu pola
khusus.

2. Logical : Merupakan gambaran bagaimana suatu perangkat dapat


berkomunikasi dengan perangkat lainnya. Tujuan dari suatu topologi jaringan
adalah menghubungkan jaringan jaringan yang telah ada dalam jaringan
tersebut,sehingga informasi dapat di transfer dari satu lokasi yang lain.

Kelebihan dari tree adalah :

1. Mendukung untuk diterapkan pada jaringan komputer dengan skala besar.

2. Pengembangan jaringan atau penambahan client yang berada dibawah hub


pusat dapat dilakukan dengan mudah.

3. Identifikasi kerusakan pada jaringan serta isolasi jaringan dapat dilakukan


dengan mudah.

4. Jika salah satu client mengalami kerusakan atau gangguan, tidak akan
mempengaruhi client lain.

5. Manajemen data yang baik, sebab komunikasi terjadi secara point to point.

-Kekurangan dari tree adalah :

1. Jika kabel utama (backbone) rusak, maka seluruh jaringan akan terganggu.

2. Hub memegang peran penting dalam jaringan, jika hub rusak maka seluruh
jaringan akan terganggu.

11
3. Jika komputer yang berada di tingkat atas mengalami kerusakan atau gangguan,
maka komputer yang berada dibawahnya juga akan mengalami gangguan.

4. Biaya yang diperlukan dalam membangun jaringan ini lebih mahal, sebab
menggunakan lebih banyak kabel dan hub.

5. Konfigurasi dan pemasangan kabel dalam jaringan tree lebih rumit dibanding
topologi lain.

6. Perawatan dalam menjaga stabilitas jaringan cukup sulit dilakukan, sebab


terdapat banyak perancangan pada node.

7. Kinerja jaringan serta aliran data lebih lambat, sebab komunikasi antar
komputer tidak bisa berjalan langsung, namun harus melalui hub terlebih dahulu.

8. Lalu lintas data sangat padat, sebab melalui sebuah kabel utama (backbone),
sehingga kemungkinan terjadinya collision (tabrakan file data) sangat besar.

 BINARY TREE

Definisi Binary Tree Binary Tree atau Pohon Biner adalah sebuah pohon
dalam struktur data yang bersifat hirarkis (hubungan one to many).

Tree bisa didefenisikan sebagai kumpulan simpul dengan setiap simpul


mempunyai paling banyak dua anak. Secara khusus, anaknya dinamakan kiri dan
kanan.

Binary tree tidak memiliki lebih dari tiga level dari Root. Binary tree
adalah suatu tree dengan syarat bahawa tiap node (simpul) hanya boleh memiliki
maksimal dua subtree dan kedua subtree tersebut harus terpisah.

Tiap node dalam binary treee boleh memiliki paling banyak dua child
(anak simpul), secara khusus anaknya dinamakan kiri dan kanan. Pohon biner
dapat juga disimpan sebagai struktur data implisit dalam array, dan jika pohon
tersebut merupakan sebuah pohon biner

12
Lengkap, metode ini tidak boros tempat. Dalam penyusunan yang rapat
ini, jika sebuah simpul memiliki indeks i, anaknya dapat ditemukan pada indeks
ke-2i+1 dan 2i+2, meskipun ayahnya (jika ada) ditemukan pada indeks lantai ((i-
1)/2) (asumsikan akarnya memiliki indeks kosong).

Tujuan sebuah pohon biner memiliki operasi traversal yaitu kunjungan


pada suatu simpul teapt satu kali. Dengana melakukan kunjungan lengkap kita
akan memperoleh urutan informasi secara linier yang tersimpan di dalam pohon
biner.

-Kelebihan dari pohon biner adalah : Semua operasi dalam Binary Tree bisa di
implementasikan langsung pada Binary Search Tree , kecuali :

• INSERT

• UPDATE

• DELETEKEY

Karena operasi diatas dapat mengakibatkan Binary Search Tree tidak urut.
Sehingga harus dilakukan modifikasi terhadap posisi node agar Binary Search
Tree tetap terurut.

-Kekurangan dari pohon biner adalah :

Tidak efisien dalam pencarian (searching the target Node), yang harus
dilakukan secara sequensial dari mulai ROOT, sampai ke Node yang dikehendaki.
Selain juga penghapusan terhadap Node Binary Tree tidak dapat dilakukan, yang
dapat dilakukan penghapusan 1 sub tree. Hal ini disebabkan karena pada Binary
Tree node tidak diurut. Binary Search Tree mengeliminir kelemahan tersebut
diatas, dengan cara mengurutkan node yang ada.

13
14
BAB II
PEMBAHASAN

2.1 Pengertian Searching (Pencarian)

Pencarian (searching) merupakan proses yang sering digunakan dalam


pengelolaan data. Proses pencarian adalah menemukan nilai (data) tertentu di
dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe
bentukan). Search algoritma adalah algoritma yang menerima argument A dan
mencoba untuk mencari record yang mana key nya adalah A.

Algoritma bisa mengembalikan nilai record, atau pointer ke record. Reord


sendiri adalah tipe data yang terdiri atas kumpulan variabel disebut field.
Sequential search (penelusuran sequensial) yaitu proses mengunjungi melalui
suatu pohon dengan cara setiap simpul di kunjungi hanya satu kali yang disebut
dengan tree transversal / kunjungan pohon.

Data dapat disimpan secara temporer dalam memori utama atau disimpan
secara permanen di dalam memori sekunder (tape atau disk). Di dalam memori
utama, struktur penyimpanan data yang umum adalah berupa larik atau tabel
(array), sedangkan di dalam memori sekunder berupa arsip (file).

Aktivitas yang berkaitan dengan pengolahan data ini sering di dahului


dengan proses pencarian. Sebagai contoh, untuk mengubah (update) data tertentu,
langkah pertama yang harus dilakukan adalah mencari keberadaan data tersebut di
dalam kumpulannya. Aktivitas yang awal sama juga dilakukan pada proses
penambahan (insert) data yang baru. Proses penambahan data dimulai dengan
mencari apakah data yang ditambahkan sudah terdapat di dalam kumpulan. Jika
sudah dan mengasumsikan tidak boleh ada duplikasi data,maka data tersebut tidak
perlu di tambahkan, tetapi jika belum ada, maka tambahkan.

15
 SEARCHING (Sequential Search dan Binarry Search)

Searching adalah metode pencarian informasi dalam suatu aplikasi, dengan


suatu kunci( key ). Pencarian diperlukan untuk mencari informasi khusus dari
table pada saat lokasi yang pasti dari informasi tersebut sebelumnya tidak
diketahui. Pencarian selalu dinyatakan dengan referensi pada adanya sekelompok
data yang tersimpan secara terorganisasi, kelompok data tersebut kita sebut table.

Pada metode searching (pencarian) ada 2 teknik yang digunakan yaitu :

1. Pencarian sekuensial (sequential search)

Sequential search disebut juga pencarian lurus (linear search). Pada


dasarnya, algoritma pencarian beruntun adalah proses membandingkan setiap
elemen larik secara beruntun satu persatu, mulai dari Page 28 14 elemen pertama,
sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa.

a. Sequential Search

Pencarian sekuensial (sequential search) atau sering disebut pencarian


linier menggunakan prinsip sebagai berikut : data yang ada di bandingkan satu
persatu secara berurutan dengan yang dicari. Pada dasarnya, pencarian ini hanya
melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap
perulangan , di bandingkan data ke-i dengan yang dicari. Apabila sama , berarti
data telah ditemukan . Sebaliknya apabila sampai akhir pengulangan , tidak ada
yang sama berarti data tidak ada.

Dalam ilmu komputer, suatu pencarian struktur data adalah setiap struktur
data yang memungkinkan pengambilan suatu item tertentu dari satu set item,
seperti sebuah data khusus dari suatu database yang bertipe sama. Pencarian
berfungsi untuk memvalidasi (mencocokkan) data.

16
Metode Searching :

1. Sequential Search

Sequential search adalah metode pencarian data yang prosesnya dilakukan


dengan membandingkan data yang dicari dengan masing-masing data didalam
suatu data bertipe sama (array). Pencarian dilakukan dari awal sampai akhir dari
data berdasarkan kunci (key) yang dicari. Pencarian akan berhenti jika data telah
ditemukan atau tidak ada lagi data yang dibandingkan. Metode sequential search
dapat digunakan untuk melakukan pencarian data baik pada array yang sudah
terurut maupun belum terurut (acak).

Sequential Search (Linear Search) Teknik pencarian data dari array yang
paling mudah adalah dengan cara sequential search, dimana data dalam array
dibaca 1 demi satu, diurutkan dari index terkecil ke index terbesar, maupun
sebaliknya.

Contoh : Array : int a[5] = {0,3,6,10,1} (index array pada bahasa C++ dimulai
dari index ke 0 !!!) jika kita ingin mencari bilangan 6 dalam array tersebut, maka
proses yang terjadi kita mencari a) dari array index ke-0, yaitu 0, dicocokan
dengan bilangan yang akan dicari, jika tidak sama, maka mencari ke index
berikutnya b) pada array index ke-1, juga bukan bilangan yang dicari, maka kita
mencari lagi pada index berikutnya c) pada array index ke-2, ternyata bilangan
yang kita cari ada ditemukan, maka kita keluar dari looping pencarian.

Contoh source :

17
Output :

 Interpolation Search Interpolation Search

Merupakan salah satu metode pencarian yang dapat digunakan. Seperti


pada binary search, data yang harus diurutkan terlebih dahulu, sebelum dapat
dilakukan pencarian dengan metode ini.

Pada metode pencarian ini, kita mencoba menebak letak data yang kita
cari, dengan perhitungan :

• Jika data[posisi] > data yg dicari, high = pos – 1 • Jika data[posisi] < data yg
dicari, low = pos + 1.

Contoh source code interpolation search :

18
Output :

2.2 Macam - Macam Algoritma Searching

 Pencarian Sekuensial

(Sequential Searching) atau pencarian berurutan sering disebut pencarian


linear merupakan metode pencarian yang paling sederhana. Pencarian beruntun
adalah proses membandingkan setiap elemen larik satu per satu secara beruntun,
mulai dari elemen pertama sampai elemen yang dicari ditemukan atau seluruh
elemen sudah diperiksa. Pencarian beruntun terbadi dua:

1. Pencarian beruntun pada larik tidak terurut;

2. Pencarian beruntun pada larik terurut.

 Algoritma

Pencarian berurutan menggunakan prinsip sebagai berikut :

1. Data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari
sampai data tersebut ditemukan atau tidak ditemukan.

2. Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai


dengan jumlah data.

3. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.

4. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir
pengulangan tidak ada data yang sama, berarti data tidak ada.

19
-Kelemahan pada kasus yang paling buruk, untuk N elemen data harus dilakukan
pencarian sebanyak N kali pula. Algoritma pencarian berurutan dapat dituliskan
sebagai berikut :
(1) i ← 0
(2) ketemu ← false
(3) Selama (tidak ketemu) dan (i <= N) kerjakan baris 4
(4) Jika (Data[i] = x) maka ketemu ← true, jika tidak i ← i + 1
(5) Jika (ketemu) maka i adalah indeks dari data yang dicari, jika data tidak
ditemukan.

 Algoritma Sequential Searching dalam bahasa C

#include <iostream.h>
#include <conio.h>
void main()
{
int i;
int cari,ketemu;
int A[100] ;

cout<<"PROGRAM SEARCHING\n";
cout<<"masukkan 7 buah data : \n\n";
for (i=1;i<=7;i++)
{
cout<<"masukkan data ke-"<<i<<endl;
cin>>A[i] ;
}
cout<<endl;
cout<<"Input bilangan yang dicari : ";

20
cin>>cari;

ketemu=0;
for(i=0;i<=7;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data ditemukan pada indeks ke-"<<i;
}
}

if (ketemu==0){
cout<<"Data tidak ditemukan";
}

getch();
}
Contoh program nya dalam bahasa C :
#include <stdio.h>
#include <conio.h>
void main(){
int data[10] = {8,10,6,-2,11,7,1,100,11,3};
int cari;
int flag=0;
printf("data = 8,10,6,-2,11,7,1,100,11,3")
printf("masukkan data yang ingin dicari = ");scanf("%d",&cari);

21
for(int i=0;i<10;i++){
if(data[i] == cari) flag=1;
}
if(flag==1) printf("Data ada!\n");
else printf("Data tidak ada!\n");
getch();
return 1;
}
Outputnya adalah :

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.

Pencarian Beruntun dengan Sentinel

 Algoritma

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

ALGORITMA

22
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

· Contoh dalam bahasa c :


#include <stdio.h>
#include <conio.h>
void main(){
int data[11] = {3,12,9,-4,21,6,1,2,8,7,4};
int cari,i;
printf("3,12,9,-4,21,6,1,2,8,7,4");
printf("masukkan data yang ingin dicari = ");scanf("%d",&cari);
data[11] = cari;
i=0;
while(data[i] != cari) i++;
if(i<11) printf("Data ada!\n"); else printf("Data tidak ada!\n");
getch;
}
Outputnya adalah :

23
2.3 Contoh Program Searching

Contoh 1 program dalam bahasa c


#include <iostream.h>
#include <conio.h>
void main()
{

int i;
int cari,ketemu;
int A[100] ;
cout<<"PROGRAM SEARCHING\n";
cout<<"masukkan 7 buah data : \n\n";
for (i=1;i<=7;i++)
{
cout<<"masukkan data ke-"<<i<<endl;
cin>>A[i] ;
}
cout<<endl;
cout<<"Input bilangan yang dicari : ";
cin>>cari;
ketemu=0;
for(i=0;i<=7;i++)
{

24
if (A[i]==cari)
{
ketemu=1;
cout<<"Data ditemukan pada indeks ke-"<<i;
}
}
if (ketemu==0){
cout<<"Data tidak ditemukan";
}
getch();
}

Outputnya adalah :

Contoh 2 program dalam bahasa c


#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int data[10] = {8,10,6,-2,10,7,1,100,1,3};

25
int cari,index;
int ketemu=0;
cout<<" Data = 8,10,6,-2,10,7,1,100,1,3 \n ";
cout<<"masukkan data yang ingin dicari = ";
cin>>cari;
for(int i=0;i<10;i++)
{
if(data[i] == cari)
{
ketemu=1;
index = i;
break;
}
}
if(ketemu == 1)
{
cout<<"Data ada!"<<endl;
cout<<"Data terletak di index ke – "<<index;
}
else cout<<"Data Tidak ada!"<<endl;
getch();
}
Outputnya adalah :

 Pencarian Biner (binary search)

26
Metoda Pencarian Biner ( Binary Search) hanya bisa diterapkan jika data array
sudah teruru. pengurutan Array bisa menggunakan jenis sorting descending atau
asscending. Kelebihan dari Searching dengan metode Binary Sort adalah Untuk
Pencarian data yang jumlahnya banyak, waktu pencarian relatif cepat. selain itu
beban komputasi juga lebih kecil karena pencarian dilakukan dari depan,
belakang, dan tengah. namun ada pula kekurangannya, yaitu data harus disorting
dahulu dan Algoritma lebih rumit, tidak baik untuk data berangkai.

 Algoritma dari Binary Sort

Proses yang terjadi pada pencarian dengan metode ini adalah sebagai berikut :
1.Membaca Array data
2.Apabila Array belum terurut maka array diurutkan terlebih dahulu.
3.Menentukan data yang akan dicari
4.Menentukan elemen tengah dari array
5.Jika nilai elemen tengah sama dengan data yang dicari, maka pencarian
berhenti.
6.Jika elemen tengah tidak sama dengan data yang dicari maka :
a.Jika nilai elemen tengah > data yang dicari maka pencarian dilakukan pada
setengah array pertama.
b.Jika nilai elemen tengah lebih kecil dari pada data yang dicari maka pencarian
dilakukan pada setengah array berikutnya.

ILUSTRASI BINARY SEARCH

Misalkan saya mempunyai data sebagai berikut : 3,1,4,7,25,12,40,78,90,65. Maka


data tersebut akan dicek, ternyata setelah dicek datanya belum terurut, maka
dengan menggunakan metoda sorting yang sudah ada, maka kita bisa mengurut
data tersebut, menjadi : 1,3,4,7,12,25,40,65,78,90

27
Setelah data tersebut diurutkan maka fungsi binary sort baru mulai bekerja
mencari data. berikut cara dari Binary sort mencari data tersebut. misalnya data
yang dicari adalah 65. maka pencariannya dijelaskan pada tabel berikut ini :

Pada data range diberi warna Hijau. Pencarian dimulai dari tengah,Kiri dan kanan.
rumus untuk Posisi tengahnya adalah ( Posisi Akhir + Posisi Awal )/2. jadi Nilai
tengah pada langkah pertama yaitu adalah 12 (berwarna merah) dan nilai
targetnya adalah 65 (kuning). Karena nilai data yang dicari > dari data yang
ditengah, maka pencarian menjadi dikanan dari nilai tengah. Setelah itu, Maka
nilai 12 menjadi awal pencarian, selanjutnya dicari kembali nilai tengah pada
range nilai 12 ke kanan sampai pada array dengan nilai 90. ternyata nilai
tengahnya adalah 40. kemudian array dari nilai 40 dibandingkan dengan target,
ternyata lebih besar, maka pencarian kembali mengarah ke kanan nilai tengah.
Array dengan nilai 40 menjadi titik awal pencarian sekarang. dan sekarang nilai
tengah nya adalah 65. maka dibandingkan dengan target ternyata sama, maka data
sudah Ditemukan. Setiap data di subtree kiri < data root subtree < setiap data di
subtree kanan.

 Algoritma
class BinaryNode {
void printInOrder( ){
if( left != null )
left.printInOrder( ); // kiri
System.out.println( element ); // Node
if( right != null )
right.printInOrder( ); // Right

28
}
}
class BinaryTree {
public void printInOrder( ){

if( root != null )


root.printInOrder( );
}
}
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
Mula-mula diambil posisi awal 0 dan posisi akhir = N – 1, kemudian dicari posisi
data tengah dengan rumus (posisi awal + posisi akhir) / 2.
Kemudian data yang dicari dibandingkan dengan data tengah.
Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1.
Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama
dengan posisi tengah + 1.
Demikian seterusnya sampai data tengah sama dengan yang dicari.
 Algoritma pencarian biner dapat dituliskan sebagai berikut :

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

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

Contoh program search binary :


#include <stdio.h>
int main()
{
int c, first, last, middle, n, search, array[100];
printf("Enter number of elements\n");
scanf("%d",&n);

printf("Enter %d integers\n", n);


for ( c = 0 ; c < n ; c++ )
scanf("%d",&array[c]);

printf("Enter value to find\n");

30
scanf("%d",&search);

first = 0;
last = n - 1;
middle = (first+last)/2;

while( first <= last )


{
if ( array[middle] < search )
first = middle + 1;
else if ( array[middle] == search )
{
printf("%d found at location %d.\n", search, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if ( first > last )
printf("Not found! %d is not present in the list.\n", search);

return 0;
}

Outputnya adalah :

31
Contoh lainnya :
#include <iostream.h>
#include <conio.h>
int binary_s(int array[], int size, int elemen)
{
int awal = 0;
int akhir = size-1;
int nilaiTengah;
while (nilaiTengah<=size && awal<=akhir)
{
nilaiTengah = (awal+akhir)/2;
if (array[nilaiTengah]==elemen)
return 1;
else if (elemen<array[nilaiTengah])
akhir = nilaiTengah-1;
else
awal = nilaiTengah+1;
}
return 0;
}
int main()
{
int size=10;

32
int data[10]={2, 3, 5, 6, 12, 44, 56, 65, 73 ,81} ;
cout<<"Data Array"<<endl;
int i, cari, hasil;
for(i=0;i<size;i++)
cout<<data[i]<<" ";
cout<<endl<<"masukkan data yang ingin anda cari: ";cin>>cari;
hasil = binary_s(data, size, cari);
if (hasil==0)
cout<<"Nilai tidak ditemukan";
else
cout<<"Nilai ditemukan";
getch();
}
Outputnya adalah :

Contoh lainnya :
#include<iostream.h>
#include<conio.h>
int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global
int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r && ketemu==0)

33
{
m = (l+r)/2;
if( data[m] == cari )
ketemu = 1;
else
if (cari < data[m])
r = m-1;
else l = m+1;
}
if(ketemu == 1) return 1; else return 0;
}
void main()
{
clrscr();
int cari,hasil;
cout<<"data = 1,3,4,7,12,25,40,65,78,90 \n";
cout<<"masukkan data yang ingin dicari = ";
cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<"Data ada!"<<endl;
}
else
if(hasil == 0)
cout<<"Data Tidak ada!"<<endl;
getch();
}
Outputnya adalah :

34
BAB III
PENUTUP

3.1 Kesimpulan

Sequential search lebih efektif jika digunakan pada sekumpulan data yang
sedikit, sedangkan binary search efektif jika digunakan pada sekumpulan data
yang berjumlah banyak. Sequential search dapat digunakan pada sekumpulan data
yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah
urut. Sedangkan proses pencarian interpolation search hampir mirip dengan proses
pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara
memperkirakan letak data.

35
DAFTAR
PUSTAKA

TABEL, P.N.S.P., ANALISIS KOMPLEKSITAS ALGORITMA UNTUK


BERBAGAI MACAM METODE PENCARIAN NILAI (SEARCHING)
DAN.

Surahman, A. M. (2015). Perancangan Sistem Penentuan Similarity


Kode Program Pada Bahasa C Dan Pascal Dengan
Menggunakan Algoritma Rabin-Karp. JUSTIN (Jurnal
Sistem dan Teknologi Informasi), 1(1), 50-55.

Handoko, Darmawan Utomo Eric Wijaya Harjo.


"PERBANDINGAN ALGORITMA STRING
SEARCHING BRUTE FORCE, KNUTH MORRIS
PRATT, BOYER MOORE, DAN KARP RABIN PADA
TEKS ALKITAB BAHASA INDONESIA."

36
37

Anda mungkin juga menyukai