`
android2116
  • 浏览: 14522 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA折半查找法

 
阅读更多
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

 

分享到:
评论
Global site tag (gtag.js) - Google Analytics