Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Algorithms Data Structures in Java #1 (+INTERVIEW QUESTIONS)

Cấu trúc dữ liệu và Giải thuật trong Java #1 (+CÂU HỎI PHỎNG VẤN)

Cấu trúc dữ liệu và Giải thuật trong Java #1 (+CÂU HỎI PHỎNG VẤN)

Cấu trúc dữ liệu và Giải thuật Cơ bản: Cây AVL, Cây tìm kiếm nhị phân, Mảng, Cây B, Danh sách liên kết, Ngăn xếp và Bảng băm

4.6
(3,176 đánh giá)
27,810 học viên
Giảng viên
Holczer Balazs
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
22.0 giờ video
187 bài giảng
40 bài quiz
14 bài coding
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 07/09/2026

Bạn sẽ học được gì

Nắm vững kiến thức nền tảng về giải thuật và cấu trúc dữ liệu
Phát hiện các đoạn mã chưa tối ưu
Tìm hiểu về mảng và danh sách liên kết
Tìm hiểu về ngăn xếp và hàng đợi
Tìm hiểu về cây tìm kiếm nhị phân
Tìm hiểu về cây tìm kiếm nhị phân cân bằng như cây AVL hoặc cây đỏ-đen
Tìm hiểu về hàng đợi ưu tiên và cấu trúc heap
Tìm hiểu về cây B và bộ nhớ ngoài
Tìm hiểu về băm và bảng băm

Yêu cầu

Java cơ bản (vòng lặp và một số OOP)

Đối tượng phù hợp

Khóa học này dành cho tất cả mọi người, từ nhà khoa học đến lập trình viên, những ai muốn tiếp cận tư duy giải thuật một cách chính thống

Nội dung khóa học

28 phần • 184 bài giảng
1 Giới thiệu
2 Bài tập và lời giải trong khóa học
1 Tại sao chúng ta cần cấu trúc dữ liệu?
2 Cấu trúc dữ liệu và kiểu dữ liệu trừu tượng
3 Tùy chọn: Cách đo thời gian chạy của giải thuật?
1 Cấu trúc dữ liệu mảng là gì?
2 Giới thiệu về mảng - các thao tác
3 Triển khai mảng
4 ArrayList trong Java
1 Lời giải: Đảo ngược mảng tại chỗ
2 Lời giải: Bài toán Anagram
3 Lời giải: Bài toán Palindrome
4 Lời giải: Bài toán đảo ngược số nguyên
1 Danh sách liên kết là gì?
2 Lý thuyết danh sách liên kết - các thao tác
3 Ưu và nhược điểm của danh sách liên kết
4 Danh sách liên kết trong Java !!!
5 Triển khai danh sách liên kết I
6 Triển khai danh sách liên kết II
7 Triển khai danh sách liên kết III
8 Triển khai danh sách liên kết IV
9 So sánh danh sách liên kết và mảng
10 Ứng dụng thực tế của danh sách liên kết
1 Danh sách liên kết đôi là gì?
2 Triển khai danh sách liên kết đôi I
3 Triển khai danh sách liên kết đôi II
4 Triển khai danh sách liên kết đôi III
5 Triển khai danh sách liên kết đôi IV
6 LinkedLists trong Java
7 So sánh thời gian chạy: danh sách liên kết và mảng
1 Lời giải: Tìm nút giữa trong danh sách liên kết
2 Lời giải: Đảo ngược danh sách liên kết tại chỗ
1 Ngăn xếp là gì?
2 Ngăn xếp trong quản lý bộ nhớ (stack và heap)
3 Minh họa bộ nhớ stack
4 Triển khai ngăn xếp bằng danh sách liên kết
5 Triển khai ngăn xếp bằng mảng
6 Ngăn xếp trong Java
7 Ứng dụng thực tế của ngăn xếp
1 Hàng đợi là gì?
2 Triển khai hàng đợi bằng danh sách liên kết
3 Hàng đợi trong Java
1 Tổng quan bài toán: Tìm giá trị lớn nhất trong ngăn xếp
2 Lời giải bài toán: Tìm giá trị lớn nhất trong ngăn xếp
3 Tổng quan: Hàng đợi sử dụng ngăn xếp
4 Lời giải: Hàng đợi sử dụng ngăn xếp
5 Lời giải: Hàng đợi sử dụng ngăn xếp - đệ quy
1 Bộ đệm vòng (ArrayDeques) là gì?
2 So sánh hiệu năng ArrayDeque và Stack
3 Tại sao nên dùng ArrayDeque thay cho Stack và LinkedList?
1 Cây tìm kiếm nhị phân là gì?
2 Cách tìm kiếm và chèn phần tử vào cây tìm kiếm nhị phân?
3 Triển khai chèn I - Lớp Node và Tree
4 Triển khai chèn II
5 Cách duyệt qua tất cả phần tử của cây tìm kiếm nhị phân? (duyệt theo thứ tự giữa)
6 Triển khai cây tìm kiếm nhị phân - tìm max, min và duyệt cây
7 Minh họa bộ nhớ stack - tìm phần tử max (min)
8 Minh họa bộ nhớ stack - duyệt cây
9 Cách xóa một phần tử khỏi cây tìm kiếm nhị phân?
10 Triển khai thao tác xóa I
11 Triển khai thao tác xóa II
12 Ưu và nhược điểm của cây tìm kiếm nhị phân
13 Ứng dụng thực tế của cây
1 Lời giải: So sánh hai cây nhị phân
2 Lời giải: Phần tử nhỏ thứ k trong cây tìm kiếm
3 Lời giải: Bài toán tính tuổi gia đình
1 Lý do đằng sau cây tìm kiếm nhị phân cân bằng
2 Cây AVL là gì?
3 Giới thiệu cây AVL - chiều cao
4 Giới thiệu cây AVL - phép xoay
5 Giới thiệu cây AVL - minh họa
6 Triển khai cây AVL I
7 Triển khai cây AVL II
8 Triển khai cây AVL III
9 Triển khai cây AVL IV
10 Triển khai cây AVL V
11 Ứng dụng thực tế của cây tìm kiếm nhị phân cân bằng
1 Cây đỏ-đen là gì?
2 Logic đằng sau cây đỏ-đen
3 Cây đỏ-đen - các trường hợp tô lại màu và xoay
4 Minh họa cây đỏ-đen
5 Triển khai cây đỏ-đen I
6 Triển khai cây đỏ-đen II
7 Triển khai cây đỏ-đen III
8 Triển khai cây đỏ-đen IV
9 Triển khai cây đỏ-đen V
10 Sự khác biệt giữa cây đỏ-đen và cây AVL
1 Cây Splay là gì?
2 Giới thiệu cây Splay - ví dụ
3 Triển khai cây Splay I
4 Triển khai cây Splay II
5 Triển khai cây Splay III
6 Ứng dụng của cây Splay
1 Hàng đợi ưu tiên là gì?
2 Giới thiệu Heap - kiến thức cơ bản
3 Giới thiệu Heap - biểu diễn bằng mảng
4 Giới thiệu Heap - thao tác xóa
5 Sử dụng cấu trúc heap để sắp xếp (heapsort)
6 Triển khai Heap I
7 Triển khai Heap II
8 Triển khai Heap III
9 Heap và java.util.PriorityQueue
10 Giới thiệu Heap - thời gian chạy
11 Binomial heap và Fibonacci heap
1 Lời giải: Kiểm tra biểu diễn min heap
2 Lời giải: Chuyển đổi max heap thành min heap
1 Bộ nhớ ngoài là gì?
2 Thời gian truy cập đĩa
3 Cây B là gì?
4 Giới thiệu cây B - chèn
5 Giới thiệu cây B - xóa
6 Các biến thể của cây B và hệ thống tập tin
1 Mảng kết hợp là gì?
2 Giới thiệu bảng băm - kiến thức cơ bản
3 Giới thiệu bảng băm - xung đột
4 Giới thiệu bảng băm - hệ số tải & thay đổi kích thước động
5 Triển khai phương pháp chuỗi I
6 Triển khai phương pháp chuỗi II
7 Triển khai phương pháp chuỗi III
8 Triển khai phương pháp dò tuyến tính I
9 Triển khai phương pháp dò tuyến tính II
10 Triển khai tổng quát dò tuyến tính I - cơ bản
11 Triển khai tổng quát dò tuyến tính II - get
12 Triển khai tổng quát dò tuyến tính III - put
13 Triển khai tổng quát dò tuyến tính IV - remove
14 Triển khai tổng quát dò tuyến tính V - resize
15 Triển khai tổng quát dò tuyến tính VI - kiểm thử
16 Map trong Java Collections
17 Map trong Java Collections - hashCode() và equals()
18 Tại sao dùng số nguyên tố trong hàm băm?
19 Ứng dụng thực tế của băm
1 Tổng quan bài toán: Hai tổng
2 Lời giải bài toán: Hai tổng
1 Giới thiệu sắp xếp
2 Tính ổn định trong sắp xếp là gì?
3 Giải thuật sắp xếp thích ứng
4 Giới thiệu Bogo sort
5 Triển khai Bogo sort
6 Giới thiệu Bubble sort
7 Triển khai Bubble sort
8 Giới thiệu Selection sort
9 Triển khai Selection sort
10 Giới thiệu Insertion sort
11 Triển khai Insertion sort
12 Giới thiệu Shell sort
13 Triển khai Shell sort
14 Giới thiệu Quicksort
15 Giới thiệu Quicksort - ví dụ
16 Triển khai Quicksort
17 Phân vùng Hoare và phân vùng Lomuto
18 Kịch bản xấu nhất của Quicksort là gì?
19 Giới thiệu Merge sort
20 Triển khai Merge sort
21 Merge sort và minh họa bộ nhớ stack
22 Giới thiệu giải thuật lai
23 Giải thuật không dựa trên so sánh
24 Giới thiệu Counting sort
25 Triển khai Counting sort
26 Giới thiệu Radix sort
27 Triển khai Radix sort
1 Lời giải: Giải thuật TimSort
2 Lời giải: Quicksort sử dụng vòng lặp
1 Giới thiệu tìm kiếm vét cạn
2 Triển khai tìm kiếm vét cạn
3 Giới thiệu thuật toán Rabin-Karp
4 Triển khai thuật toán Rabin-Karp
5 Giới thiệu thuật toán Knuth-Morris-Pratt
6 Xây dựng bảng khớp một phần
7 Triển khai thuật toán Knuth-Morris-Pratt
8 Giới thiệu thuật toán Z
9 Minh họa thuật toán Z
10 Triển khai thuật toán Z
11 So sánh các thuật toán tìm kiếm chuỗi con
12 Ứng dụng của tìm kiếm chuỗi con
1 Tại sao nên dùng bộ nhớ đệm?
2 Giới thiệu bộ nhớ đệm LRU
3 Triển khai bộ nhớ đệm LRU - Phần I
4 Triển khai bộ nhớ đệm LRU - Phần II
1 Cây Fenwick là gì?
2 Giới thiệu cây Fenwick - Cấu trúc cây
3 Giới thiệu cây Fenwick - Cập nhật
4 Triển khai cây Fenwick
1 Hướng đi tiếp theo
1 Tải mã nguồn và slide

Giới thiệu khóa học

This course is about data structures and algorithms. We are going to implement the problems in Java. The course takes approximately 20 hours to complete. It is highly recommended to type out these data structures several times on your own in order to get a good grasp of it. 

Section 1:

  • data structures and abstract data types

Section 2 - Arrays

  • what are arrays

  • what is random access and how to indexes

Section 3 - Linked Lists

  • linked lists and doubly linked lists

  • linked list related interview questions

Section 2 - Stacks and Queues:

  • what are stacks and queues

  • heap memory and stack memory

  • visualizing stack memory

Section 3 - Binary Search Trees (BSTs):

  • what are tree data structures?

  • how to achieve O(logN) logarithmic running time?

  • binary search trees

Section 4 - AVL Trees

  • what is the problem with binary search trees?

  • balanced search trees: AVL trees

  • rotations

Section 5 - Red-Black Trees

  • what are red-black trees?

  • what is recovering operation?

  • comparing AVL trees and red-black trees

Section 6 - Splay Trees

  • splay trees and caches

  • achieve O(1) running time for getting the recently visited item

Section 7 - Heaps and Priority Queues

  • what are priority queues?

  • what is heap data structure?

  • how to do sorting in O(NlogN) with heaps?

Section 8 - B-Trees

  • external memory and the main memory (RAM)

  • B-trees and their applications in memory

  • B* trees and B+ trees

Section 9 - Hashing and HashMaps:

  • what are hashing and hashtables (hashmaps)

  • what are hash-functions

  • how to achieve O(1) running time complexity

Section 10 - Sorting Algorithms

  • basic sorting algorithms

  • bubble sort and selection sort

  • insertion sort and shell sort

  • quicksort and merge sort

  • comparison based and non-comparison based approaches

  • string sorting algorithms

  • bucket sort and radix sort

Section 11 - Substring Search Algorithms

  • substring search algorithms

  • brute-force substring search

  • Z substring search algorithm

  • Rabin-Karp algorithm and hashing

  • Knuth-Morris-Pratt (KMP) substring search algorithm

Section 12 (BONUS):

  • what is LRU cache

  • LRU cache implementation

Section 13 (BONUS):

  • Fenwick trees (binary indexed trees)

  • binary indexed tree implementation

Section 14 - Algorithms Analysis

  • how to measure the running time of algorithms

  • running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations

  • complexity classes

  • polynomial (P) and non-deterministic polynomial (NP) algorithms

  • O(1), O(logN), O(N) and several other running time complexities

In each chapter you will learn about the theoretical background of each algorithm or data structure, then we are going to write the code on a step by step basis in Eclipse, Java.

Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market.

Thanks for joining the course, let's get started!

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Computer Science
Hiển thị tất cả khoá học Data Structures Algorithms
Hiển thị tất cả khoá học Java
Hiển thị tất cả khoá học Programming
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊