進行二分查找的前提是數組已排序,這里假定數組遞增排序。
每次查找都將待查找數num與處於數組中間位置a[mid]的數進行比較,num < a[mid]則在mid之前的元素中進行查找,反之在mid之后的元素中進行查找。
在函數中使用low, mid, high來對待查找的范圍來進行標記。
/*整數查找*/
void binsearch( int num, int a[], int length ) /*num為待查找數字,length為數組a的長度*/
{
int low, mid, high;
low = 0;
high = length - 1;
while( low <= high )
{
mid = ( low + high ) / 2;
if( a[mid] > num )
high = mid - 1;
else if( a[mid] < num )
low = mid + 1;
else
return mid;
}
return -1 /*未查找到num返回-1*/
}