折半查找法

mac2026-05-14  5

折半查找法

在数组中进行查找:key,如果找的的话,返回数组所对应的下标,未找到返回-1

#include <stdio.h> int BinSearch(int x,int *arr,int len) { int low = 0; /* 下标的最小值 */ int high = len-1; /* 下标的最大值 */ int mid; /* 下标的折半值 */ while(low<=high) { mid = (low+high)/2; if(x==arr[mid]) { return mid; } else if(x<arr[mid]) { low = mid+1; } else { high = mid-1; } } return -1; } int main() { int arr[] = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; int index = BinSearch(1,arr,sizeof(arr)/sizeof(int)); if(index >= 0) { printf("下标为%d(从0开始),数值为%d\n",index,arr[index]); } else { printf("无此数\n"); } return 0; }
最新回复(0)