數組的創建及常用方法


數組創建

//第一種: 創建一個數組,定義長度為10
int[] arr = new int[10];

//第二種:創建一個數組,數組值為10,20
int[] arr = {10,20};

// 當然,還可以這樣
// 這個java當初為了c++程序員能快速適應java而設定的,常用的應該是前面兩種
int arr[] = new int[10];

常用的數組方法

找出數組中最大值,最小值,反轉等

最大、最小值

int[] arr = {28,2,43,12,5,12};
// 遍歷出數組最大值(最小值同理)
// 定義一個變量,然它跟循環出來的對比,如果大,就賦值給它
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i]> max){
        max = arr[i];
    }
}
System.out.println("數組最大值是:"+ max);
// 數組最大值是:43

數組反轉

int[] array = {12,3,123,432,122,55,9};
for (int i = 0; i < array.length/2; i++) {
    int temp = array[i];
    //這里為什么要length-1獲取最后一個之后還要-1呢,因為循環i=1時,如果還是將length-1的值
    //跟賦值給array[i]的話就不對了,所以要跟着i++ 來 -i,才能剛好循環到i=2 = array.length-1-i才能剛好交換
    array[i] = array[array.length -1 -i];
    array[array.length -1 -i] = temp;
}
for (int i = 0; i < array.length; i++) {

    System.out.print(array[i] + " ");
    //9 55 122 432 123 3 12 
}

數組查詢方法,常用的有數組遍歷、二分法查找

數組遍歷

public static void main(String[] args) {
    int[] arr = {2,4,4,5,2,5,6,12,8};
    //查找元素第一次出現的索引
    int index = getIndexByELE(arr, 5);
    System.out.println("該元素第一次在數組中出現的下標是:" + index);
    //該元素第一次在數組中出現的下標是:3
}

private static int getIndexByELE(int[] arr ,int ele) {
    for (int i = 0; i < arr.length; i++) {
        if (ele == arr[i]){
            return i;
        }
    }
    return -1;
}

二分法查找

public static void main(String[] args) {
    // 前提,必須排好序的數組(有序)
    int[] arr = {10,20,30,40,50,60,70,80,90};
    int index = getIndexByELE(arr, 80);
    System.out.println("元素所在索引位置:" + index);

}

private static int getIndexByELE(int[] arr, int ele) {
    // 定義最小、最大、中間索引
    int minInxex = 0;
    int maxInxex = arr.length-1;
    int centerIndex = (minInxex+maxInxex)/2;

    while (minInxex <= maxInxex){
        // 如果要找的這個元素,剛好等於中間元素索引,那么就直接返回中間索引
        if (ele == arr[centerIndex]){
            return centerIndex;
            //如果要找的元素索引大於中間索引,則移動最小索引值 = 中間索引+1
        }else if (ele > arr[centerIndex]){
            minInxex = centerIndex + 1;
            // 如果要找的元素索引小於中間索引,則移動最大索引值 = 中間索引-1
        }else if (ele < arr[centerIndex]){
            maxInxex = centerIndex - 1;
        }
        // 代碼執行到這里,說明還沒有找到,需要再次除2,取中間值
        centerIndex = (minInxex+maxInxex)/2;
    }

    return -1;//如果沒有找到,返回-1
}

大家也可以看看視頻講解
https://www.bilibili.com/video/BV1T4411A7Fy?p=6&spm_id_from=pageDriver


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM