java代碼段
java直接查找法查找數組元素
/*
直接查找法:查詢輸入的值是否存在,如果存在就輸出索引值,不存在就傳回-1;
*/
import java.util.*; //别忘了導入;
class demo5{
public static void main(String[] args) {
int[] arr={4,54,7,3,1,79,68,78};
int i=suoYin(arr);
System.out.println("你查詢的數索引值是:"+i);
}
public static int suoYin(int arr[]){
System.out.println("請輸入你要查詢的值:");
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
for (int i=0;i<arr.length ;i++ ){
if (arr[i]==a){
return i;
} //此處省略else,如果沒找到就繼續查找,找到了直接傳回,就是停止了循環;
}
return -1;
}
}
java二分法(折半法)查找數組元素
/*
折半查找法:隻适用于有序數組,而且資料量較大時這個方法較好;
當查找的數字不存在,則傳回-1;
*/
import java.util.*;
class demo6 {
public static void main(String[] args) {
int arr[]={1,2,3,4,5,6,7,8,9};
int i=halfSearch(arr);
System.out.println("你查找的數的索引值是:"+i);
}
//二分法
public static int halfSearch(int arr[]){
System.out.print("請輸入你要查找的數字:");
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
//定義三個變量記錄查找範圍的最大、最小和中間值;
int max=arr.length-1;
int min=0;
int mid=(max+min)/2;
while(true){
if (a>arr[mid]){
min=mid+1;
}
else if (a<arr[mid]){
max=mid-1;
}
else{
return mid; //找到的情況下;
}
mid=(max+min)/2; //由于上面最大值和最小值改變會改變中間值,是以重置mid值;
//查找值不存在的情況下;
if (min>max){
return -1;
}
}
}
}
用于平時自己複習回顧,如有錯誤,歡迎指正