----------- 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);
}
}