1. 程式人生 > 實用技巧 >第六章、陣列

第六章、陣列

第六章、陣列

1. 陣列

1.1 基本概述

陣列分為:
    一維陣列、二維陣列、多維陣列
 
陣列是相同資料型別的多個元素的容器。
這些元素按線性順序排列。所謂線性順序是指除第一個元素外,每一個元素都有唯一的前驅元素;除最後一個元素外,每一個元素都有唯一的後繼元素(“一個跟一個”)。
 
一維陣列本質就是一塊連續的記憶體空間,可以在不同的儲存單元記錄不同的資料內容。
 
 
陣列名稱:類似於變數的名稱,用於記錄連續記憶體空間中的首地址
陣列元素:主要指存放在陣列記憶體空間中的資料內容。
陣列長度:主要指陣列中元素的個數,通常使用  陣列名.length的方式來獲取
陣列下標:主要指陣列元素的編號,從0開始一直到陣列的長度-1.

1.2 陣列的宣告方式

語法格式
    資料型別[] 陣列名稱 = new 資料型別[陣列長度];
 
    例如:
        int[] arr = new int[5];-表示宣告一個長度為5個元素的型別為int的一維陣列。
 
        int num = 5;  -表示宣告一個初始值為5的int型別的變數num。
 
        int arr[] = new int[5]; - 不推薦使用這種方式去做
 
 
注意事項
    1.當陣列下標越界時候會在執行階段產生:java.lang.ArrayIndexOutOfBoundsException: 5    陣列下標越界
    2.只有在宣告陣列時[]中的數字代表陣列的長度,否則一律代表陣列元素的下標;
 
 
陣列的初始化
    資料型別[] 陣列名稱 = {初始值1,初始值2,初始值3,....}
 
        例如:
            int[] arr = {10,20,30,40,50};
            int[] arr1 = new int[]{10,20,30,40,50};
 
 
            int[] arr;
            arr = {1,5,8,10};
 
 
陣列的複製
    int[] arr = {1,3,5,7,9};
    int[] arr1 = new int[10];
 
    //System.arrayCopy(原陣列,原陣列要複製的起始位置,目標陣列,起始位置,複製長度);

1.3 陣列的練習

實現使用者輸出正整數中重複數字出現的次數並列印。
    例如:
            123456712345671

1.4 氣泡排序

原理:比較兩個相鄰的元素,將值大的元素交換至右端。
 
    int[] arr = {5,8,2,10,9};       //2 5 8 9 10
 
    第一趟排序:
 
            第一次排序:5和8比較,5不大於8,不交換       5,8,2,10,9
            第二次排序:8和2比較 ,8大於2,交換位置      5 2 8 10 9
            第三次排序  8和10比較,8不大於10 ,不交換位置 5 2 8 10 9
            第四次排序  10和9比較,10大於9,交換位置        5 2 8 9 10
 
    第二趟
        第一次排序:
            5和2比較,5大於2,交換位置  2 5 8 9 10
        第二趟總共進行了1次比較,  排序結果   2 5 8 9 10
 
 
氣泡排序優點:
    每進行一躺排序,就會少比較一次因為每進行一躺排序都會找出一個較大的值。一定程式減少演算法量

2. 二維陣列

2.1 基本概念

一維陣列本質上就是一段連續的記憶體空間,用於存放多個型別相同的資料。
二維陣列本質就是由一維陣列組成的陣列,也就是說每個元素都是一個一位陣列。

2.2 宣告方式

語法格式
    資料型別[][] 變數名 = new 資料型別[m][n];
 
    m:表示這個二維陣列由多個個一位陣列
    n:表示每一個一維陣列的元素個數
 
    比如:
        int[][] arr = new int[2][3]; - 表示宣告一個具有2行3列的二維陣列
 
 
    思考:
        arr代表什麼?  arr[0]代表什麼?  arr[0][0]代表什麼?
 
        arr代表陣列的名稱,也就是用於記錄該陣列記憶體空間的首地址
        arr[0] 代表二維陣列中的第一行,也就是一個一維陣列
        arr[0][0] 代表二維陣列中下標為0行0列的元素,也就是第一個一個維陣列中的第一個元素。
 
 
        arr.length 代表二維陣列的大小,也就是二維陣列的行數。
        arr[0].length代表就是二維陣列中第一行的大小,也就是一維陣列的大小,也就是列數
 
 
 
二維陣列的初始化
    資料型別[][] 陣列名稱 = {{初始值},{初始值2},{初始值3}};
 
 
    例如:
        int[][] arr = {{1,3,5,7},{2,4,6},{8,9,10,11,15}};