本文共 966 字,大约阅读时间需要 3 分钟。
//折半查找法 #include<stdio.h> #include<stdlib.h> int binsearch(int x,int v[],int n) { int low,high,mid; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(x>v[mid]) low=mid+1; else if(x<v[mid]) high=mid-1; else return mid; } return -1; } int main() { int x,n; int position; int v[10]={1,2,3,4,5,6,7}; //scanf("%d",x); //scanf("%d",n); x=2;n=7; position=binsearch(x,v,n);//调用函数时,不要再参数的类型,数组v[],用V代替就好。 printf("%d\n",position); system("pause"); return 0;}
while循环中只用一次测试
//折半查找法,可读性较差
#include<stdio.h> #include<stdlib.h> int binsearch(int x,int v[],int n) { int low,high,mid; low=0; high=n-1; mid=(low+high)/2; while(low<=high) { if (x>v[mid]) low=mid+1; else high=mid-1; mid=(low+high)/2; } if (x==v[mid]) return mid; else return -1; } int main() { int x=0,n=0; int position; int v[10]={1,2,3,4,5,6,7};//数组初始化 //scanf("%d",x); //scanf("%d",n); x=7;n=7; position=binsearch(x,v,n);//调用函数时,不要再参数的类型,数组v[],用V代替就好。 printf("%d\n",position); system("pause"); return 0; }转载地址:http://vgini.baihongyu.com/