假設今天要撰寫一個程式,是計算3個學生的數學成績的平均值,那麼程式勢必需要3位學生的數學成績,也就是先宣告3個變數,個別儲存3位學生的數學成績,接著將變數做數學上的運算。
public static void main(String[] argv)
{
//student scores
double student1 = 50, student2 = 64, student3 = 88;
double sum = student1 + student2 + student3;
double average = sum / 3;
System.out.print("average:" + average);
}
輸出結果:
average:67.33333333333333
由於這個題目所要求的學生數量就只有3位學生,假若要求的是一千位學生,甚至高達一萬位學生的時候,逐一宣告每位學生的成績太費時
,會影響寫程式的效率
,而且容易讓程式出現錯誤
。
因此,我們需要一種可以儲存多個資料的變數,並且儲存的資料總數量能隨時取得的儲存方式。
陣列,能解決上述程式需要逐一宣告變數的問題,是資料結構中最常使用的資料儲存組織的方法。
由多個相同型別的元素所組成的串列,所有元素共用同一名稱,並且加上index方便區別
舉例來說,以double[3] students方式宣告一個double的陣列,一共有3個元素,會佔據連續的記憶體位置,也就是陣列第一個元素的位置後面會是陣列第二個元素,以此類推。
用更想像的話來說,變數就是一個小櫃子裡存放一個資料,而陣列就像是將好幾個小櫃子組成一個大櫃子,但仍然是將大櫃子裡的各個小櫃子用來個別儲存變數,一個小櫃子即為陣列的一個元素。
將上述題目 - 計算3個學生的數學成績的平均值 由陣列的儲存方式來實作
public static void main(String[] argv)
{
//宣告陣列
double[] students = {50, 64, 88};
double sum = 0;
for(int i = 0; i < students.length; i++)
sum = sum + students[i];
double average = sum / students.length;
System.out.print("average:" + average);
}
輸出結果:
average:67.33333333333333
從程式碼中可以看出,僅需要宣告陣列(一行程式碼),即可以將3位學生的成績儲存了~
僅想在此介紹陣列使用時機與跟變數的差別,對於程式語法就不多贅述。
進步太慢就是退步,共勉之。
細談資料結構 第六版
ISBN 978-986-312-014-8