庞果网编程英雄会上做的一道题:二分查找(非递归),和大家分享一下:
[html]
public class BinarySearchClass
{
public static int binary_search(int[] array, int value)
{
int beginIndex = 0;// 低位下标
int endIndex = array.length - 1;// 高位下标
int midIndex = -1;
while (beginIndex <= endIndex) {
midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出
if (value == array[midIndex]) {
return midIndex;
} else if (value < array[midIndex]) {
endIndex = midIndex - 1;
} else {
beginIndex = midIndex + 1;
}
}
return -1;
//找到了,返回找到的数值的下标,没找到,返回-1
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void main(String[] args)
{
System.out.println("Start...");
int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 };
System.out.println("查找数字8的下标:");
System.out.println(binary_search(myArray, 8));
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}
public class BinarySearchClass
{
public static int binary_search(int[] array, int value)
{
int beginIndex = 0;// 低位下标
int endIndex = array.length - 1;// 高位下标
int midIndex = -1;
while (beginIndex <= endIndex) {
midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出
if (value == array[midIndex]) {
return midIndex;
} else if (value < array[midIndex]) {
endIndex = midIndex - 1;
} else {
beginIndex = midIndex + 1;
}
}
return -1;
//找到了,返回找到的数值的下标,没找到,返回-1
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void main(String[] args)
{
System.out.println("Start...");
int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 };
System.out.println("查找数字8的下标:");
System.out.println(binary_search(myArray, 8));
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}