1. 程式人生 > >C語言:二分查詢關鍵字

C語言:二分查詢關鍵字

#include<stdio.h>

//二分查詢關鍵字

int Binarysearch(int *arr,int len,int key)
{
	int low = 0;//low代表首元素0號下標
	int high = len-1;//代表最後一個元素的下標,減1是因為最後一個是‘\0’
	while(low <= high) 
	{
		//int mid = (low+high)/2;
		int mid = (low+high)>>1;//按位右移比上一語句除法快,按位右移相當於除法
		if(arr[mid] == key)//當中間的值是找尋的關鍵字時,返回mid所對應的下標號
		{
			return mid;
		}
		else if(arr[mid] > key)//下標號>關鍵字
		{
			high = mid-1;//高標號是mid左邊的
		}
		else
		{
			low = mid+1;//低標號是mid右邊的
		}
	}
	return -1;
}

int main()
{
	int arr[] = {1,2,3,4,5,6,7};
	int len = sizeof(arr)/sizeof(arr[0]);
	printf("%d\n",Binarysearch(arr,len,5));
	printf("%d\n",Binarysearch(arr,len,3));
	printf("%d\n",Binarysearch(arr,len,4));

	getchar();
	return 0;
}

答案:4,2,3