开发者社区> 问答> 正文

用C语言编写非递归算法实现折半查找(二分查找)

用C语言编写非递归算法实现折半查找(二分查找)

展开
收起
知与谁同 2018-07-15 14:09:57 2414 0
2 条回答
写回答
取消 提交回答
  • Nothing for nothing.
    int i1,i2,i3,num[10]; int a;//要找的数i1=0;i3=9;while(i1<=i3){
    i2=(i1+i3)/2;if(a==num[i2]){
    printf("要找的数字是第%d个成员\n",i2);return;} else if(a<num[i2])
    i3=i2-1;else
    i1=i2+1; }printf("数组中没有你要找的数字\n");
    2019-07-17 22:55:34
    赞同 展开评论 打赏
  • #include <stdio.h>

    int* binary_search( int* a, int* b, int n )
    {
    int* m;
    while ( b > a ) {
    m = a + ( b - a ) / 2;
    if ( *m < n )
    a = m + 1;
    else if ( *m > n )
    b = m;
    else
    return m;
    }
    return NULL;
    }

    int main()
    {
    int a[] = { 1,3,5,7,9,11,13,15,17,19 };
    int* p1, *p2;
    p1 = binary_search( a, a + 10, 9 );
    p2 = binary_search( a, a + 10, 8 );
    if ( p1 ) {
    printf( "find %d at pos:%d\n", 9, p1 - a );
    }
    if ( !p2 ) {
    printf( "can't find value %d\n", 8 );
    }
    return 0;
    }
    2019-07-17 22:55:34
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
图解算法小抄 立即下载
面试常考算法 立即下载
超全算法笔试-模拟题精解合集 立即下载