**
二分查找的使用方法及源代码实例
**
定义类和方法
public class ArraySearchTest
{
public static void main (String[] args)
{
}
}
定义数组和相应的内容
public class ArraySearchTest{public static int search(int[] array, int value)
{
for (int i = 0; i < a.length; i++)
{
if(value == array[i])
{
return i;
}
}
}
public static void main (String[] args)
{
int [] a = new int [] {1,5,6,7,10,3,9};
int value = 9;
int index = search(a, value);
System.out.println(index);
}
}
{`public static int search(int[] array, int value)
{
for (int i = 0; i < a.length; i++)
{
if(value == array[i])
{
return i;
}
}
}
public static void main (String[] args)
{
int [] a = new int [] {1,5,6,7,10,3,9};
int value = 9;
int index = search(a, value);
System.out.println(index);
}
}
写了这么多,相信大家也看出来了,这是最好理解的,同时也是效率最低的…
二分查找(BinarySearch)
条件:
(1)待查找数组必须是有序的,要么是升序排列,要么是降序排列。
public class ArraySearchTest{public static int search(int[] array, int value)
{
for (int i = 0; i < a.length; i++)
{
if(value == array[i])
{
return i;
}
}
}
public static int binarySearch(int [] array,int valiue)
{
int low = 0;
int heigh = array.length-1;
int middle ;
while(low <= heigh)
{
middle = (low + heigh) /2;
for(int i = 0;i<array.length;i++)
{
System.out.println(array[i]);
if(i == middle)
{
System.out.print("#");
}
System.out.println();
}
if(array[middle] == value)
{
return middle;
}
if(value < array[middle])
{
return heigh = middle - 1;
}
if(valiue > array[middle])
{
low = middle + 1;
}
return -1;
}
}
public static void main (String[] args)
{
int [] a = new int [] {1,5,6,7,10,3,9};
int value = 9;
int index = search(a, value);
System.out.println(index);
}
}
{`public static int search(int[] array, int value)
{
for (int i = 0; i < a.length; i++)
{
if(value == array[i])
{
return i;
}
}
}
public static void main (String[] args)
{
int [] a = new int [] {1,2,3,4,5,6,7,8,9,10,11};
int value = 9;
int index = search(a, value);
int[] b = new int [] {1,2,3,4,5,6,7,8,9,10,11};
int index2 = binarySearch(b, 10);
System.out.println(index);
System.out.println(index2);
}
}
程序最终运行结果如下: