011 折半查詢法
阿新 • • 發佈:2019-01-09
#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");
}