Cấu trúc dữ liệu

Cấu trúc dữ liệu

Cấu trúc dữ liệu và giải thuật là một trong những môn học cơ bản của sinh viên ngành Công nghệ thông tin. Các cấu trúc dữ liệu và các giải thuật được xem như là 2 yếu tố quan trọng nhất trong lập trình, đúng như câu nói nổi tiếng của Niklaus Wirth: Chương trình = Cấu trúc dữ liệu + Giải thuật (Programs = Data Structures + Algorithms). Nắm vững các cấu trúc dữ liệu và các giải thuật là cơ sở để sinh viên tiếp cận với việc thiết kế và xây dựng phần mềm cũng như sử dụng các công cụ lập trình hiện đại.

Cấu trúc dữ liệu có thể được xem như là 1 phương pháp lưu trữ dữ liệu trong máy tính nhằm sử dụng một cách có hiệu quả các dữ liệu này. Và để sử dụng các dữ liệu một cách hiệu quả thì cần phải có các thuật toán áp dụng trên các dữ liệu đó. Do vậy, cấu trúc dữ liệu và giải thuật là 2 yếu tố không thể tách rời và có những liên quan chặt chẽ với nhau. Việc lựa chọn một cấu trúc dữ liệu có thể sẽ ảnh hưởng lớn tới việc lựa chọn áp dụng giải thuật nào

Cấu trúc dữ liệu

Mức độ cơ bản:

Mức độ trung bình:

Trình độ nâng cao:

  • Segment Tree
  • Binary Indexed Tree
  • Suffix Array
  • Sparse Table
  • Lowest Common Ancestor
  • Range Tree.

Giải thuật/ thuật toán

  • Searching(Linear search, Binary search, Ternary search)
  • Sorting (Bubble sort, Insertion sort, Merge sort, Quick sort, Radix sort, …)
  • Các giải thuật tham lam
  • Giải thuật đồ thị(BFS, DFS, Luồng cực đại, Cây khung nhỏ nhất, Đường đi ngắn nhất,…)
  • Giải thuật string(KMP, Z, String search, …)
  • Quy hoạch động

Các bạn có thể tham khảo nguồn hướng dẫn + thực hành luôn ở đây
DS: https://www.hackerearth.com/practice/data-structures
Algo: https://www.hackerearth.com/practice/algorithms

DS & Algo: https://www.geeksforgeeks.org/

Lộ trình học CTDL & GT phục vụ ôn thi ACM/ICPC, nhưng ai cũng có thể follow: https://github.com/Hieunv1996/ACM-ICPC-Preparation

Nếu bạn muốn đọc tiếng Việt thì có thể tham khảo 2 series của mình, mình vẫn đang viết tiếp
DS: https://nguyenvanhieu.vn/cau-truc-du-lieu/
Algo: https://nguyenvanhieu.vn/thuat-toan/

Các tài liệu bổ sung:

Cách cài đặt queue trong c++

Cách cài đặt queue trong c++

Bài viết hôm nay mình sẽ hướng dẫn các bạn cách cài đặt queue có sử dụng template trong ngôn ngữ c++.Nếu bạn chưa...
Mảng đa chiều

Bài 54. Mảng 2 chiều trong C – Multi-dimensional Array

Mảng là một cấu trúc dữ liệu cơ bản và được sử dụng rất nhiều trong các bài toán lập trình. Mảng đa chiều...
Bài Toán Cấu Trúc Dữ Liệu

Bài tập cấu trúc dữ liệu và giải thuật tổng hợp

Hôm nay mình sẽ hướng dẫn các bạn giải quyết một bài toán cấu trúc dữ liệu và giải thuật, đồng thời cũng chia...

Cây nhị phân – Binary Tree

Phần trước mình đã hướng dẫn các bạn về danh sách liên kết. Trong phần hướng dẫn tiếp theo này, chúng ta sẽ đi...
Mảng 1 chiều

Bài 41. Mảng 1 chiều trong C

Mảng 1 chiều là cấu trúc dữ liệu đầu tiên và cũng là cấu trúc dữ liệu đơn giản & phổ biến nhất. Mảng...
Cây tìm kiếm nhị phân

Cây tìm kiếm nhị phân – Binary search tree

Trong bài viết này, chúng ta sẽ tiếp tục tìm hiểu về cấu trúc dữ liệu Cây, và cụ thể là cây tìm kiếm...
bai-tap-cpp-co-loi-giai

Bài tập C/C++ có lời giải PDF – Tuyển tập đề thi của các...

Chào tất cả các bạn, hôm nay mình xin chia sẻ tới các bạn bộ bài tập C/C++ có lời giải được lưu trong...
Danh sách liên kết đôi

Cài đặt danh sách liên kết đôi trong C/C++

Ở bài viết trước, tôi đã hướng dẫn bạn cách cài đặt danh sách liên kết đơn và các kiến thức về danh sách...
Danh sách liên kết đơn

Cách cài đặt danh sách liên kết đơn trong c++

Bài viết hôm này mình sẽ hướng dẫn các bạn cách cài đặt danh sách liên kết đơn sử dụng code c++.Danh sách liên...
Cài đặt danh sách liên kết đơn trong C

Danh sách liên kết đơn – Single linked list

Danh sách liên kết đơn(Single linked list) là ví dụ tốt nhất và đơn giản nhất về cấu trúc dữ liệu động sử dụng...
Người sáng lập blog chia sẻ kiến thức lập trình mang thương hiệu "Lập trình không khó". Đây là một website chuyên chia các kiến thức và kỹ năng lập trình phi lợi nhuận dành cho các bạn trẻ đam mê IT.

Bài viết nổi bật

Con Trỏ Trong C

Bài 63. Con trỏ trong C

Trong bài học này, Lập trình không khó sẽ hướng dẫn các bạn cách sử dụng con trỏ trong ngôn ngữ lập trình C....
Hoán Vị 2 Số Trong C

Bài 12. Hoán vị 2 số trong C

Có lẽ với tất cả các bạn độc giả bài toán hoán vị 2 số nguyên đã cực kỳ quen thuộc. Bởi lẽ đây...
Khóa học lập trình C - Học C Bá Đạo

Bài 1. Giới thiệu khóa học “Học C Bá Đạo”

Khóa học "Học C bá đạo" hoàn toàn miễn phí dành cho tất cả độc giả của Lập Trình Không Khó. Nội dung khóa học tập trung vào thực hành và tập trung vào đào tạo tư duy lập trình.
Thuật toán tìm ước chung lớn nhất của hai số nguyên

Thuật toán tìm ước chung lớn nhất trong C/C++

Trong bài viết này tôi sẽ cùng các bạn tìm hiểu về các thuật toán tìm ước chung lớn nhất của hai số nguyên...
Tìm-bội-chung-nhỏ-nhất-của-một-mảng

Tìm bội chung nhỏ nhất của tất cả các phần tử trong mảng

Bài toán: Cho mảng một chiều các số nguyên dương. Hãy viết chương trình tìm bội chung nhỏ nhất của một mảng các số nguyên...

Chỗ này để đặt QC

Tham gia khóa học lập trình C miễn phíClick ngay
+