C語言:二分查詢關鍵字
阿新 • • 發佈:2018-12-17
#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