二分查找算法,說白了就是在有序的數組裡面給予一個存在數組裡面的值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;
}
}
嘻嘻嘻嘻嘻