Bỏ qua

Giải thích chi tiết về DSA: Tổng quan về Cấu trúc Dữ liệu và Mảng

1. Cấu trúc dữ liệu là gì?

Trong khoa học máy tính, cấu trúc dữ liệu (Data Structure - DSA) là cách tổ chức và lưu trữ dữ liệu để có thể sử dụng hiệu quả. Nói một cách đơn giản, đó là cách mà dữ liệu được sắp xếp, truy xuất và thao tác bên trong máy tính, cụ thể là trong RAM (Bộ nhớ truy cập ngẫu nhiên).

1.1 RAM là gì?

  • RAM là nơi lưu trữ tạm thời tất cả biến, dữ liệu, và chương trình đang chạy.
  • RAM được đo bằng byte (B). Máy tính hiện đại thường có từ vài GB (gigabyte) RAM trở lên (1 GB ≈ 1 tỷ byte).

1.2 Bit, Byte, và Địa chỉ bộ nhớ

  • 1 bit là đơn vị nhỏ nhất, chỉ nhận giá trị 0 hoặc 1.
  • 1 byte = 8 bit.
  • RAM là một dãy liên tục các byte. Mỗi byte có một địa chỉ duy nhất (address) trong RAM, giúp máy tính biết chính xác nơi lưu trữ từng giá trị.

2. Mảng (Array) là gì?

2.1 Khái niệm

  • Mảng là một cấu trúc dữ liệu lưu trữ nhiều giá trị cùng kiểu (ví dụ: số nguyên, ký tự), trong một khối bộ nhớ liên tục (contiguous block).
  • Ví dụ, một mảng số nguyên: [1, 3, 5].

2.2 Cách mảng được lưu trong RAM

Giả sử bạn có mảng số nguyên:

[1, 3, 5]
  • Mỗi số nguyên (int) thường chiếm 4 byte (32 bit).
  • Các giá trị được lưu liên tục trong RAM (ví dụ: tại các địa chỉ 0, 4, 8).
  • Không có dữ liệu nào khác nằm xen giữa các phần tử của mảng.

Ví dụ minh họa:

Địa chỉ (Address) Giá trị (Value)
0 1
4 3
8 5

Tại sao lại là 0, 4, 8? Vì mỗi int chiếm 4 byte, nên địa chỉ tăng lên 4 đơn vị sau mỗi phần tử.

Nếu là mảng ký tự (char):

  • Một ký tự thường chiếm 1 byte.
  • Mảng ['A', 'B', 'C'] sẽ nằm ở địa chỉ 0, 1, 2.
Địa chỉ Giá trị
0 'A'
1 'B'
2 'C'

2.3 Khái niệm "liên tục" (Contiguous)

  • Liên tục có nghĩa là các phần tử của mảng nằm sát nhau trên bộ nhớ, không bị ngắt quãng bởi dữ liệu khác.
  • Ưu điểm: Truy xuất phần tử cực nhanh (O(1)), chỉ cần biết vị trí đầu và kích thước phần tử.

2.4 Địa chỉ bộ nhớ (Memory Address)

  • Mỗi giá trị trong RAM được lưu tại một địa chỉ cụ thể.
  • Địa chỉ này là số nguyên, bắt đầu từ 0, tăng dần.
  • Truy xuất phần tử thứ i trong mảng: địa_chỉ_đầu + i * kích_thước_phần_tử.

2.5 Đặc điểm của mảng

  • Ưu điểm:
  • Truy xuất ngẫu nhiên nhanh (O(1)).
  • Đơn giản, dễ sử dụng.
  • Lưu trữ dữ liệu cùng kiểu.

  • Nhược điểm:

  • Kích thước cố định (không thêm/xóa phần tử dễ dàng).
  • Phải biết trước số lượng phần tử.
  • Việc chèn/xóa giữa mảng tốn thời gian (O(n)).

3. Ứng dụng thực tế và ví dụ mã nguồn

3.1 Khai báo và truy xuất mảng (Python)

arr = [1, 3, 5]
print(arr[0])  # Kết quả: 1
print(arr[2])  # Kết quả: 5

. Tổng kết

  • Mảng là cấu trúc dữ liệu cơ bản, lưu trữ các phần tử cùng kiểu, liên tục trong RAM.
  • Hiểu cách mảng hoạt động giúp ta tối ưu bộ nhớ và tăng hiệu quả chương trình.
  • Các cấu trúc dữ liệu phức tạp hơn (Linked List, Stack, Queue, Tree, Hash Table, v.v.) đều xây dựng dựa trên nguyên lý lưu trữ dữ liệu trong bộ nhớ như thế này.

Bình luận