Info
- Tổng hợp kiến thức và thực hành với các cấu trúc dữ liệu cơ bản và nâng cao.
- Hiểu và áp dụng các cấu trúc dữ liệu vào các thuật toán để giải quyết các bài toán.
Info
Giải thuật là cốt lõi của chương trình, trong khi cấu trúc dữ liệu là linh hồn của chương trình.
Algorithm + Data Structure = Program là một cuốn sách rất nổi tiếng do Niklaus Wirth, cha đẻ của ngôn ngữ Pascal, viết. Câu này cũng trở thành một câu nói kinh điển trong lĩnh vực khoa học máy tính. Điều này cho thấy mối quan hệ mật thiết giữa giải thuật và cấu trúc dữ liệu trong lập trình.
Bảng băm (Hash Table): còn được gọi là bảng phân tán. Đây là một cấu trúc dữ liệu cho phép truy cập trực tiếp vào dữ liệu dựa trên giá trị khóa (Key Value).
Bảng băm sử dụng hàm băm (Hash function) để tính toán giá trị tương ứng với khóa (key), và lưu trữ giá trị tương ứng vào một vị trí trong bảng để tăng tốc độ tìm kiếm. Hàm băm này còn được gọi là "hàm băm (hàm phân tán)", và mảng lưu trữ các giá trị được gọi là "bảng băm (bảng phân tán)".
Heap: Một loại cây nhị phân hoàn chỉnh thỏa mãn một trong hai điều kiện sau:
- Max Heap: Giá trị của mọi nút lớn hơn hoặc bằng giá trị của các nút con của nó.
- Min Heap: Giá trị của mọi nút nhỏ hơn hoặc bằng giá trị của các nút con của nó.
Đồ thị (Graph): là một cấu trúc được tạo thành từ tập hợp hữu hạn và không rỗng các đỉnh V (gồm n>0 đỉnh) và tập hợp các cạnh E (mô tả mối quan hệ giữa các đỉnh). Định nghĩa hình thức của đồ thị là G=(V,E).
Đồ thị có cấu trúc phức tạp, chúng ta cần biểu diễn các đỉnh và cạnh. Một đồ thị có thể có bất kỳ số lượng đỉnh nào (hữu hạn) và bất kỳ cặp đỉnh nào cũng có thể có cạnh. Khi triển khai cấu trúc lưu trữ đồ thị, chúng ta cần tập trung vào mối quan hệ giữa cạnh và đỉnh, đây là yếu tố quan trọng trong việc lưu trữ đồ thị.
Chuỗi (String): Được viết tắt là "str", là một chuỗi hữu hạn gồm một hoặc nhiều ký tự. Thường được ký hiệu là .
Dưới đây là một số khái niệm quan trọng liên quan đến chuỗi.
""
.Trie (còn được gọi là cây tiền tố, cây tìm kiếm từ) là một cấu trúc dữ liệu dạng cây. Như tên gọi, nó là một cây giống như một từ điển. Nó là một cách lưu trữ từ điển. Mỗi từ trong từ điển được biểu diễn trong Trie dưới dạng một đường dẫn từ nút gốc, các cạnh trên đường dẫn kết nối các chữ cái lại với nhau để tạo thành chuỗi tương ứng.
Mảng (Array): Là một cấu trúc dữ liệu dạng danh sách tuyến tính. Nó sử dụng một khối liên tiếp của bộ nhớ để lưu trữ một tập hợp các phần tử cùng kiểu dữ liệu.
Đơn giản mà nói, "mảng" là một cách triển khai cấu trúc dữ liệu danh sách tuyến tính theo thứ tự.
Danh sách liên kết (Linked List): là một cấu trúc dữ liệu tuyến tính. Nó sử dụng một tập hợp các đơn vị lưu trữ bất kỳ (có thể liên tục hoặc không liên tục) để lưu trữ một tập hợp các dữ liệu cùng loại.