当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的,默认是按 升序 排好的。时间复杂度: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;
}