1. 程式人生 > 其它 >一維陣列和應用

一維陣列和應用

陣列

陣列是一個變數,儲存相同資料型別的一組資料
宣告一個變數是在記憶體空間裡劃出一塊合適的空間
宣告一個數組就是在記憶體空間裡劃出一串連續的空間

陣列基本要素

識別符號–>陣列名
陣列元素 -->值
元素下標:從0開始
元素型別 -->型別
注:陣列長度固定不變,避免陣列越界

演示陣列的定義和使用

單獨宣告-分配空間-賦值-使用

        int[] a;//單獨宣告
        a=new int[3];//分配空間
        //賦值
        a[0]=88;
        a[1]=90;
        a[2]=96;
        a[0]=75;
        System.
out.println(a[0]);

注:宣告陣列時不規定陣列長度

宣告陣列並分配空間

資料型別[ ] 陣列名 = new 資料型別[大小] ;
陣列元素根據型別不同,有不同的初始值

邊宣告邊賦值

int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
不能指定陣列長度

陣列定義時的常見錯誤

1、編譯出錯,沒有寫明陣列的大小
int[] a = new int[];
2、編譯出錯,陣列越界
int[] a =new int[2];
a[2] =1;
3、編譯出錯,建立陣列並賦值的方式必須在一條語句中完成
int[ ] score = new int[5];

score = {60, 80, 90, 70, 85};
int[ ] score2;
score2 = {60, 80, 90, 70, 85};

陣列的操作

輸出數組裡的元素

        int[] a =new int[30];
        for (int i=0;i<a.length;i++){
            a[i]=(int)(Math.random()*100);
        }
        System.out.print("[");
        for (int i=0;i<a.length;i++){
            if (
i==a.length-1){ System.out.print(a[i]+"]"); break; } System.out.print(a[i]+","); }

求和

        int sum=0;
        for (int i=0;i<a.length;i++){
           sum+=a[i];
        }

增強for

       for (int num:a){//增強for 將陣列中的元素臨時賦值給num
            sum+=num;
        }
        System.out.println(sum/(double)a.length);
    }

求最大值

先假設a[0]是最大值max,數組裡的其他元素依次和max比較,如果比max大,就將值給max

        int max=a[0];
        for (int i = 1; i < a.length; i++) {
            if (a[i]>max){
                max=a[i];
            }
        }
        System.out.println("最大值是:"+max);

插入數值

        int[] a={99,85,82,63,60};
        //第一步先擴容
//        int[] b=new int[a.length+1];
//        for (int i = 0; i < a.length; i++) {
//            b[i]=a[i];
//        }
        int[] b=Arrays.copyOf(a,6);
        System.out.println(Arrays.toString(b));
        int num=98;
        //從後向前比較
        //比該數小的後移
        //找到比該數大的 則該數在大的後面插入
        //如果找不到比該數大的 則該數插入首位
        boolean isInsert=false;
        for (int i = b.length-2; i >=0; i--) {//此時的陣列b裡面的元素是{99,85,82,63,60,0}所以從b.length-2開始比較
            if (b[i]<num){
                b[i+1]=b[i];
            }else {
                isInsert=true;
                b[i+1]=num;//找到比該數大的 則該數在大的後面插入
                break;
            }
        }
        if (!isInsert){
            b[0]=num;//如果找不到比該數大的 則該數插入首位
        }
        System.out.println(Arrays.toString(b));

選擇排序

        //基本邏輯:外層迴圈確定一個位置
        //內層迴圈確定該位置的值(當前最小值)
        int[] a=new int[10];
        for (int i = 0; i < a.length; i++) {
            a[i]=(int)(Math.random()*100);
        }
        System.out.println(Arrays.toString(a));
        for (int i = 0; i < a.length-1; i++) {
            int temp=a[i];//確定位置
            int p=i;
            for (int j = i+1; j < a.length; j++) {
                if (temp>a[j]){
                    temp=a[j];
                    p=j;
                }
            }
            a[p]=a[i];
            a[i]=temp;
        }
        System.out.println(Arrays.toString(a));

Arrays

import java.util.Arrays;
Arrays.toString(a) 輸出陣列
Arrays.sort(a); 陣列從小到大排列
int[] b=Arrays.copyOf(a,6); 複製陣列a