#include<stdio.h> #include<string.h> #define LEN(x) (sizeof(x)/sizeof(int)) //默认数组data已经是从小到大排序 int bin_find(unsigned int data[],unsigned int size,unsigned int value) { int mid,head,rear; head=0; mid=size/2; rear=size-1; if(value>data[size-1]||value<data[0]||size<1) { return -1; } while(1) { printf("%d\n",mid); if(value<data[mid]) { rear=mid; mid=(head+rear)/2; continue; } if(value>data[mid]) { head=mid; mid=(rear+head)/2; continue; } if(value==data[mid]) { return mid; } } } int main(int argc, const char *argv[]) { unsigned int data[10]={1,2,3,4,5,6,7,8,9,11}; printf("sizeof=%d\n",LEN(data)); printf("b=%d\n",bin_find(data,LEN(data),2)); return 0; }