Anda di halaman 1dari 6

TERNARY SEARCH

Oleh:
Komang Sudana Yasa Pande
1929101010

PROGRAM STUDI ILMU KOMPUTER


PROGRAM PASCA SARJANA
UNIVERSITAS PENDIDIKAN GANESHA
DAFTAR ISI

A. Pengertian Ternary Search.................................................................................................. 3


B. Pseudocode Ternary Search................................................................................................ 4
C. Kompleksitas Ternary Search ............................................................................................. 5
D. Implementasi Dalam Bahasa PHP ...................................................................................... 5
E. Daftar Pustaka..................................................................................................................... 6
A. Pengertian Ternary Search
Algorit Ternary Search adalah algoritma divide and conquer yang dapat
digunakan untuk menemukan elemen dalam array (Shivam, 2016). Algoritma
Ternary Search mirip seperti algoritma binary search yakni membagi array
kemudian menyelesaikan bagian-bagian kecil dari array. Namun yang membedakan
adalah pada Ternary Search, array dibagi menjadi tiga bagian dan kemudian
menentukan bagian mana yang menjadi kunci (elemen yang dicari).

Dalam penelitian yang dilakukan oleh Arora, dkk yang mengatakan bahwa
algoritma Ternary Search membutuhkan waktu CPU lebih sedikit daripada
algoritma pencarian yang ada sepeti, pencarian linear dan pencarian biner (Arora,
Martolia, & Arora, 2016). Hal yang sama juga disampaikan oleh Bajwa, dkk yang
membandingkan kompleksitas antara algoritma Binary Search dengan algoritma
Ternary Search. Peneliti menemukan bahwa algoritma Ternary Search ketika
dibandingkan dengan algoritma Binary Search memiliki kompleksitas waktu lebih
kecil menjadi O (log3n) (Bajwa, Agarwal, & Manchanda, 2015). Oleh karena itu
algoritma Ternary Search lebih efektif dan efisien dibandingkan dengan Binary
Search dan Linier Search.

Array dalam pencarian Ternary Search harus terurut terlebih dahulu.


Adapaun tahapan dalam algoritma ini dapat dilihat pada gambar 1.

Gambar 1. Tahapan algoritma Ternary Search


Tahapan-tahapan algoritma Ternary Search dapat dijelaskan sebagai berikut:
1. Pertama, bandingkan kunci dengan elemen di mid1. Jika ditemukan sama,
kembalikan nilai mid1.
2. Jika tidak, maka bandingkan kunci dengan elemen di mid2. Jika ditemukan
sama, kembalikan nilai mid2.
3. Jika tidak, maka periksa apakah kuncinya kurang dari elemen di mid1. Jika
ya, maka ulangi ke bagian pertama.
4. Jika tidak, maka periksa apakah kunci lebih besar dari elemen di mid2. Jika
ya, maka ulangi ke bagian ketiga.
5. Jika tidak, maka kembali ke bagian kedua (tengah).

B. Pseudocode Ternary Search


Pseudocode Ternary Search yakni:
Function ternarySearch (input T:[0..N] array of Integer, left, right, key:
integer):Integer
{Algoritma untuk mencari posisi array berdasarkan kunci yang diberikan}

Kamus
mid1, mid2 : integer

function ternarySearch(T, left, right, key):

if (right >= left):


mid1  left + (right - left) / 3
mid2  right - (right - left) / 3

if (T[mid1] == key):
return mid1
endif

if (T[mid2] == key):
return mid2
endif

if (key < T[mid1]):


return ternarySearch(T, left, mid1 - 1, key)
elseif (key > T[mid2]):
return ternarySearch(T, mid2 + 1, right, key)
else
return ternarySearch(T, mid1 + 1, mid2 - 1, key)
endif
endif

return -1
endfunction

Langkah-langkah eksekusi algoritma untuk:


T : [5,8,10,23,50,55]
Key : 23
Left : 0
Right : 5

If (5 >= 0)
Mid1 = 1 //1.33
Mid2 = 4 //3.67
If (8 == 23) //false
If (50 == 23) //false

If (23 < 8) //false


ElseIf (23 > 50) //false
ElseIf
Rekursif ternarySearch(T, 2, 3, 23)
Left: 2; Right: 3; key:23
If (3 >= 2)
Mid1 = 2 //2.33
Mid2 = 3 //2.66
If (10 == 23) false
If (23 == 23)
Return 3

C. Kompleksitas Ternary Search


Kompleksitas algoritma ini adalah O(log3n)

D. Implementasi Dalam Bahasa PHP


Berikut merupakan implementasi pseudocode dalam Bahasa PHP

<?php
function ternarySearch($l, $r, $key, $ar)
{
if ($r >= $l)
{
$mid1 = (int)($l + ($r - $l) / 3);
$mid2 = (int)($r - ($r - $l) / 3);
if ($ar[$mid1] == $key)
{
return $mid1;
}
if ($ar[$mid2] == $key)
{
return $mid2;
}
if ($key < $ar[$mid1])
{
return ternarySearch($l, $mid1 - 1, $key, $ar);
}
else if ($key > $ar[$mid2])
{
return ternarySearch($mid2 + 1, $r, $key, $ar);
}
else
{
return ternarySearch($mid1 + 1, $mid2 - 1, $key, $ar);
}
}
return -1;
}

E. Daftar Pustaka
Arora, N., Martolia, M., & Arora, E. (2016). A Novel Ternary Search Algorithm.
International Journal of Computer Applications, 144(11), 35–36.
https://doi.org/10.5120/ijca2016910387

Bajwa, M. S., Agarwal, A. P., & Manchanda, S. (2015). Ternary search algorithm:
Improvement of binary search. 2015 International Conference on Computing
for Sustainable Global Development, INDIACom 2015, (January), 1723–
1725.

Shivam. (2016). Ternary Search. Retrieved October 25, 2019, from


https://www.geeksforgeeks.org/ternary-search/

Anda mungkin juga menyukai