Professional Documents
Culture Documents
Searching
Searching
Pendeklarasian:
Deklarasi
Const Nmaks = 100 {jumlah maksimum elemen
larik }
Type Larik : Array [1..Nmaks] of integer
PENCARIAN BERUNTUN (SEQUENTIAL SEARCH)
Deklarasi
k : integer { indeks larik }
Deskripsi
k 1
while (k < n) and (L[k] ≠ x) do
k k + 1
endwhile
{ k = n or L[k] = x }
if L[k] = x then { x ditemukan }
Idx k
else
Idx 0
endif
PENCARIAN BERUNTUN (SEQUENTIAL SEARCH)
int main() {
int arr[] = {10, 25, 30, 45, 50, 60};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 45;
} else {
std::cout << "Target tidak ditemukan dalam array" << std::endl; }
return 0;
}
PENCARIAN BAGIDUA (BINARY SEARCH)
Pencarian bagidua adalah metode pencarian yang
diterapkan pada sekumpulan data yang sudah
terurut (terurut menaik atau terurut menurun).
Metode ini digunakan untuk kebutuhan pencarian
dengan waktu yang cepat.
PENCARIAN BAGIDUA (BINARY SEARCH)
Misalkan indeks kiri adalah i dan indeks kanan adalah j.
pada mulanya, j =1 dan j = N
Langkah 1: Bagi dua elemen larik pada elemen tengah. Elemen
tengah adalah elemen dengan indeks k = (i+j) div 2. (elemen tengah,
L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[i..j] dan
bagian kanan L[k+1..j])
Langkah 2: Periksa apakah L[k] = X. jika ya, pencarian dihentikan
karena x sudah ditemukan. Tetapi jika L[k] ≠ X, harus ditentukan
apakah pencarian akan dilakukan di larik bagi kiri atau di bagian
kanan. Jika L[k] < X, maka pencarian dilakukan pada larik bagian
kiri. Sebaliknya jika L[k] > X, pencarian dilakukan pada larik bagian
kanan.
PENCARIAN BAGIDUA (BINARY SEARCH)
Ilustrasi pencarian bagidua:
Misalkan diberikan larik L dengan delapan buah elemen
yang sudah terurt menurun seperti berikut:
PENCARIAN BAGIDUA (BINARY SEARCH)
Algoritma pencarian bagidua untuk larik terurut
menurun:
procedure bagi_dua1 (input L : larik, input n, x :
integer, output idx : integer)
Deklarasi
i, j : integer { indeks kiri dan
indeks kanan larik }
k : integer { indeks elemen tengah }
if (arr[mid] == target) {
return mid;
}
if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {10, 25, 30, 45, 50, 60};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 45;
int result = binarySearch(arr, 0, size - 1, target);
if (result != -1) {
std::cout << "Target ditemukan di indeks " << result << std::endl;
} else {
std::cout << "Target tidak ditemukan dalam array" << std::endl;
}
return 0;
}
KELEBIHAN DAN KEKURANGAN