Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Pencarian biner dalam C
Temukan nilai dalam array terurut dengan membagi rentang pencarian menjadi dua.

Pencarian biner memerlukan array terurut. Bandingkan target dengan elemen tengah. Jika target lebih kecil, buang bagian kanan; jika lebih besar, buang bagian kiri. Jika sama, kembalikan indeksnya.
Hitung titik tengah dengan low + (high - low) / 2 agar tidak menjumlahkan dua indeks besar. Saat memperbarui batas, keluarkan titik tengah yang sudah diperiksa. Jika low melebihi high, nilainya tidak ditemukan.
Versi iteratif menggunakan waktu O(log N) dan ruang tambahan O(1). Uji elemen pertama dan terakhir, target yang tidak ada, serta array satu elemen. Jika terdapat duplikat, hasilnya belum tentu kemunculan pertama.
Kode C
#include <stdio.h>
int binarySearch(int arr[], int size, int target) {
int low = 0;
int high = size - 1;
while (low <= high) {
// Prevent (low + high) integer overflow
int mid = low + (high - low) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) low = mid + 1;
else high = mid - 1;
}
return -1; // Target not found
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 23;
int result = binarySearch(arr, n, target);
if (result != -1)
printf("Element %d found at index %d\n", target, result);
else
printf("Element %d not present\n", target);
return 0;
}Buka di kompilerKeluaran yang diharapkan
Element 23 found at index 5
Pertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.