二分法查找

时间:2008-05-04 19:14:35   来源:   作者:

//二分法查找
#define n 9
#include "stdio.h"
int search(int *a,int key,int row,int upper);
void main()
{
 //数组a
 int a[n]={10,20,30,50,76,80,90,95,108};
 //初始化
 int key,ret;
 key = 76;
 //调用
 ret=search(a,key,0,n-1);
 //输出
 if(ret!=-1){
  printf("公检察%d次\n",ret);
 }
 else
 {
  printf("no!");
 }
}
来源中国教程网

int search(int *a,int key,int row,int upper)
{
 int mid=0;
 int k=0;
 while(row<upper)
 {
  mid=(int)((upper+row)/2);
  if(key==mid){
   break;
  }
  //在右边
  else if(key>mid){
   row=mid+1;
  }
  else
   upper=mid-1;
  k++;
 }
 return k;
}

http://www.cnjiaocheng.com


上一篇:递归实现从1到n之和   下一篇:插入排序法

相关文章