二分查找法
/*
* 二分查找法
*/
int MyBiSearch(int data[], int low, int high, int key)
{ /* 二分查找法 */
/* 返回升序集合data[low..high)中小于等于key的最大元素的序号 */
/* key<data[low]时,返回low-1 */
/* data[high-1]<key时,返回high-1 */
while (low < high)
{ /* 注意细节! */
int mid = (low + high) >> 1;
key < data[mid] ? high = mid : low = mid + 1;
}
return --low;
}