二分法查找:java代码如下
public class Bisearch {
public static int bisearch(int[] data, int find){
int low = 0;
int mid = 0;
int upper = 0;
if (null == data) {
return -1;
}
upper = data.length - 1; //计算长度
while (low <= upper) {
mid = low + (upper - low) / 2;
if (data[mid] > find) {
upper = mid - 1;
}
else if (data[mid] < find) {
low = mid + 1;
}
else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] data = { 55, 7, 28, -3, 1, 7, 29, 0, 5, 4 };
Bisearch.bisearch(data, 22);
}
}
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 - low) / 2;
if (str[mid] < find)
{
low = mid + 1;
}
else if (str[mid] > find)
{
upper = mid - 1;
}
else
{
return mid;
}
}
return -1;
}