C语言之二分查找

来源:互联网 发布:我知天下之中央 编辑:程序博客网 时间:2024/05/02 01:02

二分查找算法,说白了就是在有序的数组里面给予一个存在数组里面的值Q,然后用将其先和数组中间的比较,如果Q大于中间值,则进行下一次mid后面的比较,直到找到相等的,就可以得到他的位置。


 示例代码如下

#include<stdio.h>
#include<stdlib.h>


int erfen(int a[],int n,int num);


int main(){
int n;
    int i;
printf("输入几个数? ");
scanf("%d",&n);
int a[n];
    for(i=0;i<n;i++){
    int d;
         printf("请输入第%d个数?",i+1);
         scanf("%d",&d);
         a[i]=d;
}
printf("想查找的数为?");
int q;
scanf("%d",&q);
    int g = erfen(a,n,q);
g = g+1;
printf("第%d个",g); 
return 0;
}


int erfen(int a[],int n,int num){
int low=0;
int high=n-1;
int mid;
while(low<high){
mid =(low+high)/2;

if(a[mid]==num)
  return mid;
if(a[mid]<num)
   low=mid+1;
   if(a[mid]>num)
       high=mid-1;
}
 
}




嘻嘻嘻嘻嘻


1 0