天天看點

第五節 數組數組

數組

1.數組的概念

數組是相同類型資料的集合。
其中,每一個資料稱作一個數組元素,每個數組元素可以通過一個下标來通路他們。

2.數組的建立

數組的建立可分為靜态初始化和動态初始化

靜态初始化:在程式運作前就能确定數組的大小和數組中的初始資料

文法:
資料類型[] 數組名(變量名/對象名) = {元素1,元素2....};
或
資料類型[] 數組名(變量名/對象名) =  new 資料類型[]{元素1,元素2....}
           

動态初始化:數組的大小或數組中資料在程式運作時才能決定

文法:
資料類型[] 數組名(變量名/對象名) = new 資料類型[數組長度];
或
資料類型[] 數組名(變量名/對象名);//先聲明變量
數組名 = new 資料類型[length];//建立數組并指派
//注:數組名 = {元素1,元素2....}; 不能這樣寫
           

注意:

  1. 數組下标(從0開始)超出數組長度,數組越界異常(運作時異常)
  2. 數組中每個元素都有預設值,預設值是該資料類型預設值
  3. 數組名稱.length(屬性):取得數組長度

3.關于數組使用上的例子

例題1

/**
 * @标題: 章節5
 * @項目名 例題1
 * @項目描述: 建立一個int型數組并指派,然後輸出它每一個元素。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1418:59
 */
public class LiTi1 {
    public static void main(String[] args) {
        int[] num = new int[3];
        num[0] = 1;
        num[2] = 2;
        for (int i = 0; i < 3; i++) {
            System.out.println(num[i]);
        }
    }
}
           

例題2

/**
 * @标題: 章節5
 * @項目名 例題2
 * @項目描述: 建立一個數組int[] num={4,1,2},然後在其中找出最大的值并輸出。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1419:12
 */
public class LiTi2 {
    public static void main(String[] args) {
        int[] num = {4, 1, 2};
        int max = num[0];
        for (int i = 0; i < num.length; i++) {
            if (num[i] > max) max = num[i];
        }
        System.out.println("最大值為:" + max);
    }
}
           

4.關于數組操作的常用方法(Arrays)

是在java.util.*包下,需要導包。主要的功能是操作數組(元素)

toString(數組名稱) 将數組元素轉換成字元串進行操作
equals(數組1,數組2) 比較兩個數組是否一相同
sort(數組名稱) 對數組進行升序排序

5.常用的幾個排序方法

冒泡排序

第五節 數組數組

原理:将相鄰的兩個元素進行比較,最大的值放在右端。

過程:N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,是以可以用雙重循環語句,外層控制循環多少趟,内層控制每一趟的循環次數。

import java.util.Arrays;
/**
 * @标題: 章節5
 * @項目名 例題3
 * @項目描述: 對數組int[] num={4,1,6,3};用冒泡排序法進行升序排序。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1419:39
 */
public class LiTi3 {
    public static void main(String[] args) {
        int[] num = {4, 1, 6, 3};
        for (int a = 1; a < num.length; a++) {
            for (int b = 0; b < num.length - a; b++) {
                if (num[b] > num[b + 1]) {
                    int c = num[b];
                    num[b] = num[b + 1];
                    num[b + 1] = c;
                }
            }
        }
        System.out.println(Arrays.toString(num));
    }
}
           

選擇排序

第五節 數組數組

原理:每一趟從待排序的資料元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

過程:

1.首先從原始數組中選擇最小的1個資料,将其和位于第1個位置的資料交換。

2.接着從剩下的n-1個資料中選擇次小的1個元素,将其和第2個位置的資料交換

3.然後,這樣不斷重複,直到最後兩個資料完成交換。最後,便完成了對原始數組的從小到大的排序。

import java.util.Arrays;
/**
 * @标題: 章節5
 * @項目名 例題4
 * @項目描述: 對數組int[] num={4,1,6,3};用選擇排序法進行升序排序。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1419:39
 */
public class LiTi4 {
    public static void main(String[] args) {
        int[] num = {4, 1, 6, 3};
        for (int a = 0; a < num.length; a++) {
            for (int b = a + 1; b < num.length; b++) {
                if (num[a] > num[b]) {
                    int c = num[a];
                    num[a] = num[b];
                    num[b] = c;
                }
            }
        }
        System.out.println(Arrays.toString(num));
    }
}
           

插入排序

第五節 數組數組

原理:每一步将一個待排序的資料插入到前面已經排好序的有序序列中,直到插完所有元素為止。

過程:

1.确定插入排序的數,一般從第二個開始選擇

2.從第二個數開始,拿出第二個數進行向前插入排序,一直到拿到最後一個數向前做插入排序

3.每次将選擇作為插入的數與前面比較,如果小于則前面的數往後移動一位,否則插入到這個位置

import java.util.Arrays;
/**
 * @标題: 章節5
 * @項目名 例題5
 * @項目描述: 對數組int[] num={4,1,6,3};用選擇排序法進行升序排序。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1513:44
 */
public class LiTi5 {
    public static void main(String[] args) {
        int[] num = {4, 1, 6, 3};
        for (int a = 1; a < num.length; a++) {
            int jiaoHuan = num[a];
            int shuLie = a - 1;
            while (shuLie >= 0 && num[shuLie] > jiaoHuan) {
                num[shuLie + 1] = num[shuLie];
                shuLie--;
            }
            num[shuLie + 1] = jiaoHuan;
        }
        System.out.println(Arrays.toString(num));
    }
}
           

6.二維數組

二維數組的元素是一維數組。

二維數組的建立

1. 資料類型[][] 數組名 = new 資料類型[len1][len2];//初始化數組
   len1: 二維數組的元素個數(有len1個一維數組)
   len2: 限定一維數組的元素個數

2. 資料類型[][] 數組名 = new 資料類型[len1][];
   len1: 二維數組的元素個數(有len1個一維數組)
       
3.資料類型[][] 數組名 = {{1},{1,2},{1,2,3}};
4.資料類型[][] 數組名 = new 資料類型[][]{{1},{1,2},{1,2,3}};
           

7.練習題

練習1

題目:連接配接兩個數組,使其組成一個新的數組。
import java.util.Arrays;
/**
 * @标題: 章節5
 * @項目名 練習1
 * @項目描述: 連接配接兩個數組,使其組成一個新的數組
 * @建立人 yaojiawen
 * @建立時間 2021/4/519:35
 */
public class LianXi2 {
    public static void main(String[] args) {
        int[] num1 = {1, 2, 3};
        int[] num2 = {4, 5, 6};
        int len = num1.length + num2.length;
        int[] zuHe = new int[len];
        for (int a = 0; a < len; a++) {
            if (a < num1.length) zuHe[a] = num1[a];
            else zuHe[a] = num2[a - num1.length];
        }
        System.out.println(Arrays.toString(zuHe));
    }
}

           

練習2

題目:把一個數組裡面的值拼接成一個字元串。如int[] a={1,2,3};使得String b=[1,2,3];
/**
 * @标題: 練習1
 * @項目名 章節4
 * @項目描述: 把一個數組裡面的值拼接成一個字元串。如int[] a={1,2,3};使得String b=[1,2,3];
 * 注:字元串連接配接可以用方法append()或字元串連接配接符 "+"
 * @建立人 yaojiawen
 * @建立時間 2021/3/3016:10
 */
public class LianXi1 {

    public static void main(String[] args) {
        int[] num = new int[3];
        num[0] = 20;
        num[1] = 30;
        num[2] = 40;
        String pinJei = "[";
        for (int a = 0; ; a++) {
            pinJei = pinJei + num[a];
            if (a == num.length - 1) {
                pinJei += "]";
                break;
            }
            pinJei += ",";
        }
        System.out.println(Arrays.toString(num));
    }
}
           

練習3

建立一個數組,這個數組中第一個和數組中最大的數交換位子,最小的和最後的數交換位置,其他元素位置不變。
import java.util.Arrays;
/**
 * @标題: 章節5
 * @項目名 練習3
 * @項目描述: 建立一個數組,這個數組中第一個和數組中最大的數交換位子,最小的和最後的數交換位置,其他元素位置不變。
 * @建立人 yaojiawen
 * @建立時間 2021/4/1516:06
 */
public class LianXi3 {
    public static void main(String[] args) {
        int[] num = {4, 31, 48, 1, 3, 48, 4};
        int a = 0, b = 0;
        for (int i = 1; i < num.length; i++) {
            if (num[a] < num[i]) a = i;  //找出最大值的下标
            if (num[b] > num[i]) b = i;  //找出最小值的下标
        }
        int c = num[0];  //把第一個和最大值交換
        num[0] = num[a];
        num[a] = c;
        c = num[num.length - 1];  //把最後一個和最小值交換
        num[num.length - 1] = num[b];
        num[b] = c;
        System.out.println(Arrays.toString(num));
    }
}
           
上一篇: 第五節記錄
下一篇: 第五節 Dialog