Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

ADT Array Representation ในโครงสร้างข้อมูล

แนวคิดพื้นฐาน

ADT (Abstract Data Type) คือชนิดข้อมูลนามธรรมที่กำหนด "พฤติกรรม" ไม่ได้กำหนด "รายละเอียดการนำไปใช้" Array เป็น ADT เพราะจัดเก็บข้อมูลติดต่อกัน (Contiguous) และเข้าถึงได้โดย Index/Position โดยตรง

int[] arrA = new int[1];
String[] arrB = new String[1];
Person[] arrC = new Person[3]; // Person เป็น Class ที่กำหนดเอง

Array เป็น Abstract เพราะเก็บได้ทุกชนิด: int, String, Object ที่กำหนดเอง

ข้อดีของ Array

  • Random Access อันรวดเร็ว: O(1) เข้าถึงทุก Index โดยตรง
  • Memory Efficient: ใช้หน่วยความจำน้อยมาก มี Overhead เกือบเป็นศูนย์

ข้อเสียของ Array

  • Insert/Delete ช้า: O(n) ต้องเลื่อนข้อมูล
  • ขนาดคงที่ (Static): ต้องรู้ขนาดตอนสร้าง ขยายไม่ได้ (ต้องสร้างใหม่และคัดลอก)

ตัวอย่าง: Array-Based Implementation ของ ADT List (Java)

public class ListArrayBased implements ListInterface {
    private static final int MAX_LIST = 50;
    private Object[] items;      // Array เก็บข้อมูล
    private int numItems;        // จำนวนข้อมูลจริง

    public ListArrayBased() {
        items = new Object[MAX_LIST];
        numItems = 0;
    }
    // ... methods: add, remove, get, size, isEmpty ...
}

สรุป

Array เป็นพื้นฐานสำคัญของ Data Structure หลายตัว (ArrayList, Vector, Heap, Hash Table) เข้าใจข้อดี/ข้อเสียช่วยเลือกใช้ให้เหมาะสม: ใช้ Array ตอนเข้าถึงบ่อย/รู้ขนาดล่วงหน้า หลีกเลี่ยงตอน Insert/Delete บ่อย/ขนาดไม่แน่นอน