อาร์เรย์นับเป็นโครงสร้างข้อมูลที่ถูกนำมาใช้บ่อยมาก ๆ กับการเขียนโปรแกรม ดังนั้นเราควรจะทำความรู้จักและสนิทกับมันให้มากที่สุดเลยก็ว่าได้
- อาร์เรย์เป็นโครงสร้างข้อมูลแบบหนึ่งที่ผู้ใช้ต้องกำหนดคุณสมบัติขึ้นมาก่อน โดยประกอบด้วยสมาชิกจำนวนหนึ่งที่เรียงต่อกันตามลำดับที่ถูกมองเป็นตาราง
- สมาชิกทุกตัวจะมีชนิดข้อมูลที่เป็นแบบเดียวกัน
- ในการใช้อาร์เรย์สามารถเข้าถึงสมาชิกที่ต้องการได้โดยตรง ซึ่งมีตัวชี้ใช้อ้างไปยังสมาชิกที่ต้องการเรียกว่า (index) ซึ่งจะเป็นเลขจำนวนเต็ม
- การกำหนดช่วงหรือจำนวนสมาชิกจะใช้ขอบเขตล่างซึ่งมีค่าน้อยที่สุด และขอบเขตบนซึ่งมีค่ามากที่สุด
- อาร์เรย์เป็นโครงสร้างข้อมูลที่คงที่ เปลี่ยนแปลงจำนวนสมาชิกไม่ได้ขณะทำงาน
มีการกำหนดลักษณะของอาร์เรย์ออกเป็นมิติต่าง ๆ ดังนี้
อาร์เรย์หนึ่งมิติ (One-dimension Array)
มีลักษณะที่ง่ายที่สุดเป็นตารางที่มีเพียงแถวเดียว หรือบางครั้งเรียกว่าเวกเตอร์ เช่น A = {10,20,30,40,50} ‣ อาร์เรย์หนึ่งมิติจะมีดัชนีเพียงตัวเดียวที่ใช้อ้างไปยังตำแหน่งของสมาชิกแต่ละตัว อาร์เรย์แต่ละตัวจะถูกแยกแยะด้วยชื่ออาร์เรย์ตามด้วยดัชนี (index) ที่อยู่ในวงเล็บ
จากอาร์เรย์ A จะได้ A(0)=10, A(1)=20, A(2)=30, A(3)=40 และ A(4)=50 ซึ่งมีสมาชิก 5 ตัว
ดังนั้นเมื่อต้องการใช้อาร์เรย์ก็เพียงแค่กำหนดชื่อและใช้ดัชนีอ้างไปยังสมาชิกแต่ละตัว
ในการเขียนอัลกอรึทึมจึงใช้โครงสร้างควบคุมการทำงานแบบวนลูปเพื่อใช้ควบคุมสมาชิกแต่ละตัว
ตัวอย่างการใช้งานอาร์เรย์หนึ่งมิติ
ตัวอย่างการหาค่าสูงสุดในอาร์เรย์
public static void main(String[] args) {
int[] a= new int[]{1, 20, 15, -10, 12, 99, 3, 50, -60, 89};
int max =0;
for(int i=0; i< a.length; i++){
if(a[i] > max){
max = a[i];
}
}
System.out.println("max is "+max);
}
ผลลัพธ์
max is 99
อาร์เรย์สองมิติ (Two-dimension Array)
เป็นอาร์เรย์ที่มีสมาชิกเป็นชนิดข้อมูลแบบอาร์เรย์ ลักษณะเป็นตารางที่มีทั้งแถวและคอลัมน์ หรือเรียกว่าเมตทริก จากตัวอย่างข้างล่าง เป็นอาร์เรย์สองมิติ ที่มีสมาชิกในแถว 3 ตัว และแต่ละสมาชิกจะมีสมาชิกในคอลัมน์ 3 ตัว
ก็จะได้เป็นตารางขนาด 3*3
ชื่อ | คะแนน | เกรด |
---|---|---|
สมชาย ตั้งใจเรียน | 79 | B+ |
สมหญิง เรียนดี | 85 | A |
สมบัติ มากมี | 70 | C |
ตัวอย่างการใช้งานอาร์เรย์สองมิติ
public static void main(String[] args) {
String[][] students = {
{"สมชาย ตั้งใจเรียน","79","B+"},
{"สมหญิง เรียนดี","81","A"},
{"สมบัติ มากมี","74","B"}
};
for(int row=0; row< students.length; row++){
String[] student = students[row];
for(int column=0; column< student.length; column++){
System.out.print(student[column]+" ");
}
System.out.println("");
System.out.println("---------------");
}
}
การเข้าถึงข้อมูลในอาร์เรย์เราก็แค่วนลูป โดยลูปแรกจะหาจำนวนแถวของอาร์เรย์ และลูปที่สองดึงข้อมูลที่อยู่ในคอลัมน์ออกมาแสดง
ผลลัพธ์
สมชาย ตั้งใจเรียน 79 B+
สมหญิง เรียนดี 81 A
สมบัติ มากมี 74 B
อาร์เรย์หลายมิติ (N-dimension Array)
การสร้างอาร์เรย์อาจเป็น สามมิติ สี่มิติ หรือมากกว่านั้นเรียกว่าอาร์เรย์หลายมิติหรือ N-มิติ ดัชนีและช่วงจำนวนสมาชิกก็จะเพิ่มมากขึ้นตามจำนวนมิติ ‣ อาร์เรย์ N-มิติ จะใช้ค่าดัชนี N ตัวอ้างไปยังตำแหน่งสมาชิกแต่ละตัว
ผมก็ขอจบเรื่องอาร์เรย์ไว้แค่นี้นะครับ เพราะเป็นโครงสร้างข้อมูลที่คุ้นเคยกันดีที่สุด คงไม่ลงรายละเอียดอะไรที่พิสดาร (55) เอาไว้เรื่องอัลกอรึทึม จะได้หยิบยกอาร์เรย์มาใช้ให้หนำใจกันไปเลย