随笔 - 163, 文章 - 1, 评论 - 20, 阅读 - 14万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

C语言二分法

Posted on   steve.z  阅读(57)  评论(0编辑  收藏  举报

//
//  main.c
//  BinarySearch
//
//  Created by steve xiaohu zhao on 2023/10/16.
//

#include <stdio.h>


// 二分法查找指定元素在数组中出现的索引位置
int BinarySearch(int *array, int length, int k) {
    int left, right, mid, NotFound = -1;
    
    // 设置左端点起点
    left = 0;
    // 设置右端点起点
    right = length;
    
    while (left < right) {
        
        // 计算中间元素坐标
        mid = (left + right) / 2;
        if (k < array[mid]) {
            // 调整有边界
            right = mid +1;
        } else if (k > array[mid]) {
            // 调整左边界
            left = mid + 1;
        } else {
            
            // 查找成功, 返回数据元素的下标
            return mid;
        }
    }
    
    // 循环结束如果没有找到对应的元素, 则返回 not found
    return NotFound;
}

int main(int argc, const char * argv[]) {
    int nums[100];
    
    // 0, 5, 10, 15, 20, 25, ...., 99*5 = 495
    for (int i = 0; i < 100; i++) {
        nums[i] = i * 5;
        printf("%d 的索引位置是:%d \n", i*5, i);
    }
    printf("====================================\n");
    int idx = BinarySearch(nums, 100, 20);
    
    printf("找到啦~~~索引值是:%d \n", idx);
    
    
    
    return 0;
}


相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示