黑馬程序員-數組的查找操作

----------- android培訓java培訓java學習型技術博客、期待與您交流! ------------

</pre><pre class="java" name="code">/*
需求:數組的一般查找
思路:
定義一個函數,實現查找功能
對查找數與數組進行比較,如果相同返回角標,如果沒有返回-1
在主函數中調用函數
步驟:
1,定義一個函數getIndex(),返回類型是int,參數是int key,int[] arr.
2,用for循環結構用key與每個數組元素進行比較,如果相同直接返回角標值,
如果沒找到返回-1.
*/

/*
需求:折半查找
思路:
1.定義一個函數,實現查找功能。
2,定義三個變量min ,max,mid(中間位)
3,用查找數與mid的值進行比較,大於的話min=mid+1,小於的話max=mid-1;
4.如果查找數存在值放回mid,如果不存在則放回-1
步驟:
1.定義函數getIndex_2(),返回類型int,參數int[] arr,int key;
2,定義三個變量min,max,mid(存儲中間角標)
3,用while循環判斷,比較key與arr[mid]是否相等。
4,不相等的話,比較key與arr[mid]的大小,
大於的話min=mid+1,小於的話max=mid-1;在求出mid的值
相等的話直接放回mid
*/


class  ArraySearch
{
	//折半查找方式(必須是順序數組)
	public static int hashSerach(int[] arr,int key)
	{
		//第二種思路
		int min=0,max=arr.length-1;
		int mid=(min+max)/2;
		while(max>=min)//比較角標,如果max<min直接返回-1
		{
			if(key>arr[mid])
			min=mid+1;
			else if(key<arr[mid])
				max=mid-1;
			else 
				return mid;
			mid=(min+max)/2;
		}
		return -1;
		
		/*第一種思路:
		int min=0,max=arr.length-1;
		int mid=(min+max)/2;
		while(key!=arr[mid])//比較key與arr[mid],相等返回mid
		{
			if(max>=min)
			{
			if(key>arr[mid])
				min=mid+1;
			else max=mid-1;
			mid=(min+max)/2;
			}else return -1;
			
			
		}
		return mid;
		*/
	}
	//一般查找方式
	public static int getIndex(int[] arr,int key)
	{
		for(int i=0;i<=arr.length-1;i++)
		{
			if(key==arr[i])
			{
				return i;
			}
		}
		return -1;
	}
	public static void main(String[] args) 
	{
		int[] arr={1,2,3,5,6,9,10,14};
		int index=	hashSerach(arr,2);
		System.out.println("Index="+index);
	}
}



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章