doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:5332回复:0

C语言,实现一个二分查找的算法

楼主#
更多 发布于:2019-10-14 15:35
使用C语言,实现一个二分查找的算法:
#include <stdio.h>
#include<stdlib.h>
int includeValue(int scores[],int val,int len){
    int low=0,high=len-1,mid;
    while(low<=high){
        mid = (low + high) / 2;
        if(scores[mid]>val){
            high = mid-1;
        }else if(scores[mid]<val){
            low=mid+1;
        }else if(scores[mid]==val){
           return mid;
        }
    }
    return -1;
}
int main()
{
    int score[]={7,10,13,16,19,29,32,33,37,41,43};
    int len = sizeof(score) / sizeof(score[0]);
    int val= 43;
    int index = includeValue(score,val,len);
    printf("%d",index);
    return 0;
}

#思路#
二分查找适用于有序的顺序表,基本的思路是:首先将给定的关键字key与表array的中间位置的元素进行比较。如果相等,则查找成功,如果不相等,则查找的元素一定在表的前半部分或者后半部分。继续缩小范围到前半部分或者后半部分再进行同样的查找,直到找到为止,或者查完之后仍然没有找到元素。下面给出一次算法的查找过程实例:

#实例#
假设数组array为[7,10,13,16,19,29,32,33,37,41,43],要查找的元素为11:

图片:2018060320181268.png



#复杂度#
时间复杂度为O(log₂n),空间复杂度为O(1)

原文链接:https://blog.csdn.net/m0_37316917/article/details/80559813
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号