一維陣列的元素查詢和利用Arrays工具類查詢,可變引數等
阿新 • • 發佈:2019-02-15
1.一維陣列元素查詢:
(1)順序查詢:
根據給定的數值,在陣列中一個一個的查詢;int[] arr={3,21,53,543,23};
int num = 21;
for(int i = 0;i<arr.length;i++){//就是陣列元素的遍歷查詢
if(arr[i]==num){
System.out.println(i);
}
}
(2)二分法查詢:
二分法要求:必須先進行升序排列 分析:1.進行升序排列,同時確定中間的陣列元素 2.定義兩個start和end的邊界變數 3.讓要求查詢的數值和中間的元素數值mid比較,確定在中間數值mid的左邊還是右邊範圍{氣泡排序的程式碼塊}
int start = 0;
int end =arr.lentth-1 ;
//開始定義第一個和最後一個數值元素的下標為邊界
while(start<=end){//設定範圍在陣列元素內
ind mid = (end+start)/2;
//確定中間的陣列元素
if(is[mid]>num){
//小於中間值,num在mid的左邊,所以end邊界會向左移動一個
end= mid-1;
}else if{
start= mid+1;//否則的話,則start邊界向右移動一個
}else{
System.out.println(i);//當arr[mid]==num的時候,輸出查詢數值的下標
break;
}
}
2.Arrays工具類查詢數值元素和排序
Arrays--是JDK提供的針對陣列的工具類 所以要先導包:import java.util.Arrays; Arrays裡所以得方法都是靜態方法; 靜態方法是:直接可以用類名呼叫的方法(1)查詢:
同樣的使用arrays工具類二進位制查詢也必須先陣列進行升序排列程式碼:int srt = Arrays.binarySearch(int[] arr,num);
srt輸出的是陣列元素排序後的下標
int[] arr填入的是陣列名,
num是需要查詢的數值
問題:若是查詢的數值是陣列沒有的元素,則返回值是該元素在陣列中排序的下標的複數減1(-(插入點)-1)(2)排序:
程式碼:Arrays.sort(陣列名);
3.可變引數
是方法過載的優化 在多個數組且每個陣列的元素個數不同的情況下,可變引數節省了重複寫程式碼陣列:int[] arr={n個}
//n個元素,都可傳入add方法中
public static int add(int...a){
}
問題:但是add(int...a,int b)和add(int...a,double b)會出現編譯報錯,因為系統不能識別最後的b是傳入哪個值 而add(int b,int...a)和add(double b,int...a)對應int[] arr={12.3,12,4,23,45,3}是可行的
4.DOS命令視窗輸入字串可以列印輸出的方法:
import java.util.Arrays;
public class TS{
public static void main(String[] args){
/*
鍵盤錄入:
javac TS.java
java TS 張 李 散
*/
//因為args的陣列元素傳入到main方法裡了---args作為一個數組名稱
for(String str:args){
System.out.println(atr);//輸出的是張 李 散
}
}
}