class ArrayFind
{
public static void main(String[] args)
{
int[] arr = new int[]{1,6,9,11,18,54,60,66,90};
System.out.print("find 18 from array:");
printArr(arr);
System.out.println("find result is(halfSearch):" + halfSearch_2(arr, 18));
System.out.println("find result is(halfSearch_2):" + halfSearch_2(arr, 18));
}//end of method main
//打印一个数组
public static void printArr(int[] arr)
{
for (int x = 0; x<arr.length; x++ )
{
if (x == arr.length - 1)
{
System.out.println(arr[x]);
break;
}
System.out.print(arr[x] + ",");
}
}//end of method printArr
//折半查找法
public static int halfSearch(int[] arr, int key)
{
int max = arr.length - 1;
int min = 0;
int mid = (max + min)/2;
while (arr[mid] != key)
{
if (key>arr[mid])
{
min = mid + 1;
}
else if (key<arr[mid])
{
max = mid - 1;
}
if (min>max)
{
return -1;
}
mid = (max + min)/2;
}//end of while
return mid;
}//end of method halfSearch
//折半查找的第二种方式
public static int halfSearch_2(int[] arr, int key)
{
int max = arr.length - 1;
int min = 0;
int mid = (max + min)/2;
while (min <= max)
{
if ( key > arr[mid] )
{
min = mid + 1;
}
else if ( key < arr[mid] )
{
max = mid - 1;
}
else if (key == arr[mid])
{
return mid;
}
mid = ( max + min ) / 2;
}//end of while
return -1;
}//end of method halfSearch
}//end of class ArrayFind