Big-O vs Big-Θ vs Big-Ω
Trường hợp tốt nhất, xấu nhất và trung bình; phân biệt cận trên (O), cận dưới (Ω) và cận chặt (Θ) một cách trực giác.
Trường hợp tốt nhất, xấu nhất và trung bình; phân biệt cận trên (O), cận dưới (Ω) và cận chặt (Θ) một cách trực giác.
Big-O là gì, vì sao nó quan trọng đến vậy, hai quy tắc rút gọn, cách nhìn code đoán Big-O — qua hình dung, chạy debug từng bước và một trò chơi.
Đi sâu từng lớp Big-O từ O(1) đến O(2ⁿ) — định nghĩa, ví dụ code, hình dung đời thường và mức tăng trưởng thực tế.
Ba giai đoạn học thuật toán, đường cong quên & lặp ngắt quãng, vòng lặp tự học, và những lỗi học tập kinh điển khiến bạn học mãi không vào.
Mẫu chia để trị — chia bài toán thành các phần nhỏ, giải từng phần rồi ghép lại; nền tảng của merge sort và binary search.
Mọi đệ quy đều viết lại được bằng vòng lặp; khi nào nên dùng cái nào, và cách chuyển đổi qua lại.
Đệ quy là gì, vai trò của base case (điều kiện dừng) và recursive case, qua ví dụ giai thừa chạy debug từng tầng.
Đo bộ nhớ thuật toán dùng thêm, phân biệt in-place O(1) với O(n), và đánh đổi thời gian–bộ nhớ.
Mỗi lời gọi hàm chiếm một khung trên ngăn xếp; đệ quy quá sâu hoặc thiếu base case gây tràn ngăn xếp (stack overflow).
Vì sao một thao tác thỉnh thoảng rất đắt nhưng tính trung bình vẫn rẻ — qua ví dụ mảng động tự nhân đôi.
Cách viết quan hệ truy hồi cho thuật toán đệ quy và dùng Định lý thợ (Master Theorem) để suy ra Big-O nhanh.
Định nghĩa thuật toán, năm tính chất bắt buộc, mô tả bằng pseudocode và sơ đồ khối, chạy debug từng bước qua ví dụ tìm số lớn nhất.
Vì sao cùng một bài toán nhưng thuật toán này nhanh hơn triệu lần thuật toán kia, cách đo bằng đếm thao tác, và mẹo đánh đổi bộ nhớ lấy tốc độ.