首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言折半查找字符數組版:字符串有序查找

     編輯:關於C

代碼實現

#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 表示是否存在,簡化邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved