当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的,默认是按 升序 排好的。时间复杂度:O(logn)
集合中的set和map中使用二分法进行查找的。
int BiSearch(char *str, int n, char find) //返回值是:下标
{
int low = 0, mid = 0, upper = n-1;
if ((NULL == str) || (0 >= n))
{
return -1;
}
while (low <= upper)
{
mid = (low + upper) / 2;
if (str[mid] < find)
{
low = mid + 1;
}
else if (str[mid] > find)
{
upper = mid - 1;
}
else
{
return mid;
}
}
return -1;
}