欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

011 折半查找法

程序员文章站 2024-03-20 18:29:16
...
#include <stdio.h>
#define   N   10
/*
折半查找算法:
1、将数列有序化排列;
2、先以有序数列的中点位置为比较对象
3、如果要找的元素值小于该重点元素,则该查找序列缩小为左部分,否则为右半部分
*/
int fun(int  a[], int  m )
{  int  low=0,high=N-1,mid;
   while(low<=high)
   {  mid=(low+high)/2;
      if(m<a[mid])
        high=mid-1;
      else if(m > a[mid])
        low=mid+1;
      else  
        return(mid);
   }
   return(-1);
}
void main()
{  int  i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m;

   printf("a数组中的数据如下:");
   for(i=0;i<N;i++) printf("%d ", a[i]);
   printf("Enter m: ");  scanf("%d",&m);
   k=fun(a,m);
   if(k>=0) printf("m=%d,index=%d\n",m,k);
   else  printf("Not be found!\n");
}