代碼實現
#include <stdio.h>
#include <string.h>
int binarySearch(char *a, int l, int r, char x) {
while (l <= r) {
int m = l + (r - l) / 2;
if (x > a[m]) l = m + 1;
else if (x < a[m]) r = m - 1;
else return 1;
}
return 0;
}
int main() {
char a[] = {1,3,4,6,7,8,56,67,78}; // 有序字符數組
int n = strlen(a); // 注意:含 \0 實為 10,有效長度 9
int found = binarySearch(a, 0, n-2, 5); // 排除 \0
printf("%s\n", found ? "found" : "not exist");
return 0;
}
注意事項
strlen 返回含結束符長度,查找範圍用 n-2(或顯式傳遞有效長度);
- 字符數組自動升序,適用二分;
- 返回 1/0 表示是否存在,簡化邏輯。