Pearls4 编写正确的程序

4.1 二分搜索

#include<stdio.h>
//#define MAX_N 1000
const int MAX_N = 1000;
// 二分搜索,找到排序数组中的val出现的位置
int binarySearch(int arr[],int val)
{
    int lo = 0,up = MAX_N - 1;
    while(lo <= up)
    {
        int mid = (lo + up) / 2;
        if(arr[mid] > val) up = mid - 1;
        else if(arr[mid] == val) return mid;
        else lo = mid + 1;
    }
    return -1;
}
// 二分搜索,找到排序数组中的val在数组arr中第一次出现的位置
int binarySearch2(int arr[],int val)
{
    int lo = 0,up = MAX_N - 1;
    while(lo + 1 != up)
    {
        int mid = (lo + up) / 2;
        if(arr[mid] < val) lp = mid;
        else up = mid;
    }
    int p = up ;
    if(p >= n || x[p] != t)
        p = -1;
    return p;
}
int main(void)
{
    int arr[MAX_N];
    int i = 0;
    for(i = 0;i < MAX_N; i++)
        arr[i] = i * 3;
    i = binarySearch(arr,18);
    if(i > -1)
        printf("index = %d , val = %d\n",i,arr[i]);
    return 0;
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当我最初开始参加编程面试的时候,我所有最心仪的公司都忽视了我。现在回头看那个时候,我发现自己当时去参加面试都完全没...
    Nextoffer阅读 8,985评论 14 168
  • 吃完晚饭回到工位准备继续加班的路小白,照例拿起手机刷会儿朋友圈。据她说,这是她减轻工作压力的方式之一。可是同为处女...
    大薇薇薇薇阅读 226评论 0 0
  • 因为现在的不如意,所以纠结于过去。——矫情 我的脑子有死水而滞胀,整个人浮躁极了。什么事都没做好,没能与时间一起一...
    傲娇的巨人阅读 266评论 0 0
  • 清晨五点,不等闹钟响起便起床了。洗漱完毕,便去厨房给孩子们准备早餐。 乡村的清晨是宁静的,也是清新的,偶尔几声的鸡...
    静华2016阅读 689评论 10 15