Chương này giúp người học ôn tập lại những kiến thức cơ bản trong học phần môn Cấu trúc dữ liệu và giải thuật. Nội dung ôn tập gồm có: Độ phức tạp của giải thuật, tìm kiếm & sắp xếp, danh sách liên kết, stack & queue, cấu trúc cây. Mời các bạn cùng tham khảo.
Trang 1Ôn tập
Cấu trúc dữ liệu & giải thuật
Trang 2Nội dung
• Phần đánh giá cuối khoá
• Độ phức tạp của giải thuật
• Tìm kiếm & sắp xếp
• Danh sách liên kết
• Stack & queue
• Cấu trúc cây
Trang 3Đánh giá cuối khoá
Trang 4Đánh giá cuối khoá
Nội dung Số câu hỏi
Trang 6Độ phức tạp của giải thuật
• Thời gian thực hiện GT
– Giải thuật
– Tập chỉ thị của máy tính
– Cấu hình của máy tính
– Kỹ năng của người lập trình
• Dựa trên sự thực thi
• Thời gian thực hiện của chương trình là hàm theo kích thước dữ liệu vào n.
Trang 7Độ phức tạp của giải thuật
• Đơn vị của T(n) : theo số lệnh được thực hiện.
Trang 8Độ phức tạp giải thuật
• Khi n đủ lớn: n > 20, thì T1(n) < T2(n)
• Cách hợp lý nhất là xét tỷ suất tăng của hàm TG thực hiện CT thay vì chính bản thân thời gian thực hiện.
Trang 9Tỉ suất tăng
• Hàm ko âm T(n) có tỉ xuất tăng f(n) nếu
tồn tại các hằng số C và N0 sao cho:
– “ cho hàm ko âm T(n) bất kỳ, ta luôn tìm được
tỷ suất tăng f(n) của nó ”
Trang 10Độ phức tạp giải thuật
• Cho hàm T(n), T(n) có độ phức tạp f(n) nếu tồn tại các hằng C, N0 sao cho:
suất tăng là f(n) và ký hiệu T(n) là O(f(n))
Trang 163 Có 3 lệnh thực thi tuần tự I1, I2 và I3, độ phức tạp O(I1) = 1, O(I2)
= logn và O(l3) = n 2 Độ phức tạp của khi 3 lệnh thực thi tuần tự là
4 Có 2 nhóm lệnh I1 và I2, độ phức tạp O(l1) = logn và O(l2) = O(1)
Lệnh l1 thực thi n lần, mỗi lần gọi thực thi l2 Độ phức tạp là
Trang 20Câu hỏi
kiếm nhị phân để tìm phần tử có giá trị 33 thì cần bao nhiêu lần so sánh khóa
A 2 B 3 C 4 D 5
thuật tìm kiếm nhị phân để tìm phần tử có khóa là 8 thì các giá trị lần lượt được so sánh là
thuật giải tìm kiếm nhị phân để tìm phần tử có khoá là 9 thì giải thuật kết thúc không tìm thấy khi so sánh với phần tử nào trong mảng
thuật chọn để sắp xếp thì tại lượt thứ 3 thì trạng thái sắp xếp của mảng là:
A 2 12 8 5 1 6 4 15
B 1 2 8 5 12 6 4 15
C 1 2 5 8 12 6 4 15
D 1 2 4 5 12 6 8 15
Trang 248 Phương pháp sắp xếp nào không cần so sánh giá trị khóa của các phần tử
A Quicksort
B Shellsort
C InterchangeSort
D RadixSort
Trang 259 Cho hàm InsertionSort không đầy đủ
1 void InsertionSort(int a[], int n) {
2 int pos, i, x;
3 for(i=1; i < n; i++) {
4 x = a[i]; pos = i-1;
5 while ((pos ≥ 0) && (a[pos] > x)) {
Trang 27Linked list
1 Phát biểu nào của danh sách liên kết dùng cấp phát động là đúng
A Thao tác thêm và xóa đơn giản
B Kích thước của danh sách phải cố định
C Có thể áp dụng tìm kiếm nhị phân
D Các phần tử nằm liên tục trong bộ nhớ
Trang 30Linked list
4 Cho hàm xóa nút đầu danh sách
void DeleteFirst(NodePtr &pHead) {
Trang 31Linked list
5 Hoàn thành thao tác xóa nút sau p
Trang 33Linked list
7 Điểm nổi bật của danh sách liên kết vòng
A duyệt nhanh hơn dslk đơn
B cho phép duyệt hai chiều
C chỉ cần biết một phần tử là có thể duyệt hết danh sách
D
Trang 34Linked list
8 Thao tác chèn vào đầu DSLK vòng
1 void InsertFirst(NodePtr &pList, int x) {
Trang 35Linked list
9.Thao tác chèn vào cuối
1 void InsertLast(NodePtr &pList, int x) {