Featured image of post Tổng hợp kiến thức về cấu trúc dữ liệu cho kỳ thi 408 - j88 tặng 50k

Tổng hợp kiến thức về cấu trúc dữ liệu cho kỳ thi 408 - j88 tặng 50k

Khuyến mãi đặc biệt: J88 tặng 50k cho tất cả thành viên mới đăng ký. Đừng bỏ lỡ cơ hội nhận thưởng!

Khái niệm cơ bản về cấu trúc dữ liệu

Các khái niệm và thuật ngữ nền tảng

Phần tử dữ liệu là đơn vị nhỏ nhất của dữ liệu, thường được xem xét và xử lý như một khối thống nhất.

Đối tượng dữ liệu là tập hợp các phần tử dữ liệu có đặc điểm giống nhau, là một tập con của dữ liệu.

Kiểu dữ liệu bao gồm nhiều loại khác nhau:

  • Kiểu nguyên tử: Là kiểu dữ liệu mà giá trị của nó không thể phân chia thêm, ví dụ như số nguyên, số thực, ký tự,…
  • Kiểu cấu trúc: Là kiểu dữ liệu mà giá trị của nó có thể được phân chia thành nhiều phần (hoặc thành phần), ví dụ như mảng, cấu trúc,…

Loại dữ liệu trừu tượng (ADT): Đây là một mô hình toán học cùng với tập hợp các thao tác định nghĩa trên mô hình đó. Một ADT chính là một dạng của cấu trúc dữ liệu.

Cấu trúc dữ liệu bao gồm ba khía cạnh chính:

  • Cấu trúc logic: Là mối quan hệ logic giữa các phần tử dữ liệu, không phụ thuộc vào cách lưu trữ.
  • Cấu trúc lưu trữ: Là cách biểu diễn các phần tử dữ liệu và mối quan hệ của chúng trong máy tính.
  • Thao tác trên dữ liệu: Là các phép toán được định nghĩa trên kiểu dữ liệu trừu tượng.

Cấu trúc logic và cấu trúc lưu trữ có mối liên kết chặt chẽ. Các phần tử dữ liệu giống nhau có thể tạo thành các cấu trúc dữ liệu khác nhau, và các phần tử dữ liệu khác nhau cũng có thể tạo thành cùng một cấu trúc dữ liệu.

Ba yếu tố của cấu trúc dữ liệu

  • Cấu trúc logic: Là mối quan hệ logic giữa các phần tử dữ liệu, không phụ thuộc vào cách lưu trữ. Có thể phân thành hai nhóm lớn:

    • Tập hợp: Ngoài việc cùng thuộc về một tập hợp, các phần tử không có bất kỳ mối quan hệ nào khác.
    • Cấu trúc tuyến tính: Mỗi phần tử chỉ có một phần tử trước và sau nó (mối quan hệ một-một).
    • Cấu trúc cây: Một phần tử có thể có nhiều phần tử con (mối quan hệ một-nhiều).
    • Cấu trúc đồ thị hoặc mạng: Nhiều phần tử có thể liên kết với nhau (mối quan hệ nhiều-nhiều).
  • Cấu trúc lưu trữ: Là cách biểu diễn các phần tử dữ liệu và mối quan hệ của chúng trong máy tính. Bao gồm:

    • Lưu trữ tuần tự: Sử dụng một chuỗi các ô nhớ liên tiếp để lưu trữ các phần tử dữ liệu theo thứ tự. Nhược điểm là khi chèn hoặc xóa cần di chuyển nhiều phần tử, và chỉ sử dụng các vùng nhớ liền kề, dẫn đến tình trạng phát sinh nhiều mảnh trống bên ngoài.
    • Lưu trữ liên kết: Sử dụng các ô nhớ tùy ý để lưu trữ các phần tử dữ liệu, và mối quan hệ logic giữa các phần tử được biểu diễn bằng các con trỏ. Ưu điểm là khi chèn hoặc xóa không cần di chuyển nhiều phần tử, nhưng nhược điểm là mỗi phần tử sẽ chiếm thêm không gian để lưu trữ con trỏ, và chỉ có thể truy cập tuần tự.
    • Lưu trữ chỉ mục: Trong khi lưu trữ thông tin phần tử, đồng thời thiết lập bảng chỉ mục bổ sung. Mỗi mục trong bảng chỉ mục được gọi là mục chỉ mục, dạng phổ biến của mục chỉ mục là (từ khóa, địa chỉ).
    • Lưu trữ băm: Tính toán trực tiếp địa chỉ lưu trữ của phần tử dựa trên từ khóa của phần tử đó, còn được gọi là lưu trữ hash.
  • Thao tác trên dữ liệu: iwin68.club phiên bản mới Là các phép toán được định nghĩa trên kiểu dữ liệu trừu tượng.

Thuật toán và đánh giá thuật toán

Khái niệm cơ bản về thuật toán

Thuật toán là mô tả các bước giải quyết vấn đề cụ thể, trong máy tính nó được biểu diễn dưới dạng dãy lệnh hữu hạn, và mỗi lệnh đại diện cho một hoặc nhiều hoạt động.

Thuật toán có các đặc điểm cơ bản sau:

  • Hữu hạn: Chỉ thực hiện một số lượng hữu hạn các bước.
  • Xác định: Mỗi bước phải rõ ràng và không mơ hồ.
  • Khả thi: Các bước phải có thể thực hiện được trên máy tính.
  • Đầu vào: Có thể có hoặc không có đầu vào.
  • Đầu ra: Phải có ít nhất một đầu ra.

Một thuật toán tốt nên có các đặc điểm sau:

  • Đúng đắn: Đưa ra kết quả đúng cho mọi trường hợp.
  • Dễ đọc: Dễ hiểu cho người đọc mã nguồn.
  • Bền vững: Xử lý tốt cả những trường hợp ngoại lệ.
  • Hiệu quả cao: Sử dụng tài nguyên tối ưu.
  • Tiêu thụ bộ nhớ thấp: Sử dụng ít không gian lưu trữ.

Đo lường j88bet hiệu suất thuật toán

Phức tạp độ không gian: Là lượng không gian lưu trữ tạm thời mà thuật toán sử dụng trong quá trình chạy, được biểu diễn bởi S(n). Ta gọi S(n) là độ phức tạp không gian của thuật toán.

  • Thuật toán làm việc tại chỗ: Nếu lượng không gian phụ trợ mà thuật toán yêu cầu là hằng số, tức O(1).

Phức tạp độ thời gian: Là số lần lặp lại các phép toán cơ bản trong thuật toán, được biểu diễn bởi T(n). Ta gọi T(n) là độ phức tạp thời gian của thuật toán.

  • Mã tuần tự chỉ ảnh hưởng đến các hằng số, vì vậy có thể bỏ qua.
  • Chỉ cần chọn một phép toán cơ bản trong vòng lặp để phân tích số lần thực hiện và mối quan hệ với n.
  • Với các vòng lặp lồng nhau, chỉ cần chú ý đến số lần thực hiện của phép toán cơ bản ở tầng lặp sâu nhất.

Các khái niệm về độ phức tạp thời gian:

  • Độ phức tạp thời gian xấu nhất: Là độ phức tạp thời gian của thuật toán trong trường hợp xấu nhất.
  • Độ phức tạp thời gian trung bình: Là thời gian mong đợi của thuật toán khi tất cả các trường hợp đầu vào xuất hiện với xác suất ngang nhau.
  • Độ phức tạp thời gian tốt nhất: Là độ phức tạp thời gian của thuật toán trong trường hợp tốt nhất.

Các bậc độ phức tạp thời gian phổ biến:

  • O(1): Hằng số.
  • O(log n): Logarithmic.
  • O(n): Tuyến tính.
  • O(n log n): j88 casino Tuyến tính-logarithmic.
  • O(n^2): Bình phương.
  • O(n^3): Lập phương.
  • O(2^n): Chũ số mũ.

Thứ tự tăng dần của độ phức tạp: Hằng số < Logarithmic < Tuyến tính < Số mũ.

Built with Hugo
Theme Stack thiết kế bởi Jimmy