C语言静态查找表的查找算法(顺序查找、折半查找)

 

 

顺序查找的实现

复制代码
#include <stdio.h>

#define SIZE 10  // 静态查找表的大小

// 顺序查找函数
int sequentialSearch(int arr[], int size, int target) {
    for (int i = 0; i < size; i++) {
        if (arr[i] == target) {
            return i;  // 查找成功,返回目标的索引
        }
    }
    return -1;  // 查找失败
}

int main() {
    int staticTable[SIZE] = {23, 45, 12, 67, 34, 89, 10, 77, 55, 31};  // 静态查找表
    int target;

    printf("请输入要查找的数字:");
    scanf("%d", &target);

    int index = sequentialSearch(staticTable, SIZE, target);
    if (index != -1) {
        printf("找到数字 %d ,它在索引 %d 上。\n", target, index);
    } else {
        printf("数字 %d 不在查找表中。\n", target);
    }

    return 0;
}
复制代码

 

 

折半查找的实现

复制代码
#include <stdio.h>

#define SIZE 10  // 静态查找表的大小

// 折半查找函数(二分查找)
int binarySearch(int arr[], int size, int target) {
    int low = 0;
    int high = size - 1;

    while (low <= high) {
        int mid = (low + high) / 2;  // 计算中间索引
        if (arr[mid] == target) {
            return mid;  // 查找成功,返回索引
        } else if (arr[mid] < target) {
            low = mid + 1;  // 在右半部分继续查找
        } else {
            high = mid - 1;  // 在左半部分继续查找
        }
    }
    return -1;  // 查找失败
}

int main() {
    int staticTable[SIZE] = {10, 12, 23, 31, 34, 45, 55, 67, 77, 89};  // 静态查找表(有序)
    int target;

    printf("请输入要查找的数字:");
    scanf("%d", &target);

    int index = binarySearch(staticTable, SIZE, target);
    if (index != -1) {
        printf("找到数字 %d ,它在索引 %d 上。\n", target, index);
    } else {
        printf("数字 %d 不在查找表中。\n", target);
    }

    return 0;
}
复制代码

 

posted @   漫漫长路</>  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2023-02-15 C#可以应用的领域有哪些
2023-02-15 中英文章5 互联网的利与弊(The Prons and Cons of the Internet)
点击右上角即可分享
微信分享提示