1. 程式人生 > >011 折半查詢法

011 折半查詢法

#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"); }