1. 程式人生 > >一維陣列的元素查詢和利用Arrays工具類查詢,可變引數等

一維陣列的元素查詢和利用Arrays工具類查詢,可變引數等

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的左邊還是右邊範圍
            4.每次比較中間數值mid和查詢數值num,並移動邊界變數,依次縮小範圍,最後中間數值mid和num相等,則找到了查詢數值num
{氣泡排序的程式碼塊}
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);//輸出的是張  李  散
  }
 }
}