二分查找法是算法课必讲的查找算法之一,它的理论学计算机的都知道。离开学校多年,很多东西都忘光了,如今重新复习算法,顺便整理整理,也作为学习的笔记。//在数组data中查找值为key的元素,找到返回下标(zero based),否则返回-1template<typename T>int binsrch(T *data, unsigned len, T key );template<typename T>int binsrch(T *data, unsigned len, T key )...{ if( len < 1 ) ...{ return -1; } unsigned low = 0; unsigned high = len - 1; unsigned mid = 0; while( low <= high ) ...{ //计算mid = (high + low) / 2,用(high+low)/2当high+low溢出时会出错 mid = low + ( ( high - low ) >> 1 ); if( key == data[mid] ) ...{ return mid; } else if( key > data[mid] ) ...{ low = mid+1; } else ...{ high = mid - 1; } } return -1;}int _tmain(int argc, _TCHAR* argv[])...{ int arr[] = ...{1,3}; int pos = binsrch( arr, sizeof(arr)/sizeof(arr[0]), 3 ); return 0;}