查找成功返回对应的数组下标,失败返回-1
1.递归实现
int _binarySearch(int * array,int begin,int end,int value){ if(begin > end){ return -1; } int index = (begin+end)/2; int sig = array[index]-value; if(sig == 0){ return index; } else if(sig > 0){ end = index-1; } else{ begin = index+1; } return _binarySearch(array,begin,end,value); }
2.非递归实现
int binarySearch( int * array, int size, int value){ int begin = 0 ,end = size; int index; while (begin <= end){ index = (begin + end) / 2 ; int sig = array[index] - value; if (sig == 0 ){ return index; } else if (sig > 0 ){ end = index - 1 ; } else { begin = index + 1 ; } } return - 1 ; }