C语言-二分查找法

使用二分法进行查找,通过中间位置的判断进行二分查找,将p_head 和 p_tail的位置进行改变,一直到p_head > p_tail 停止循环

复制代码
/*
折半排序查找
*/
#include <stdio.h>
int half_search(int* p_val, int size, int val) {
    int* p_head = p_val; 
    int* p_tail = p_val + size - 1; 
    while (p_head < p_tail) {
        int* p_mid =p_head + (p_tail - p_head) / 2; 
        if (*p_mid > val) {
            p_tail = p_mid; 
            p_tail--; 
        }
        else if(*p_mid < val) {
            p_head = p_mid; 
            p_head++; 
        }
        else if(*p_mid == val) {
            return (p_mid - p_val); 
        }
        
    }
    return -1; 
}

int main(void) {
    int val[5] = {1, 2, 3, 4, 5}; 
    int result = half_search(val, 5, 6); 
    if (result == -1) {
        printf("没有查到\n"); 
    }
    else {
        printf("%d\n", result); 
    }

}
复制代码

 

posted @   c语言我的最爱  阅读(566)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示