You are on page 1of 13

B

1. Bậc của cây là gì? Đáp án:Bậc lớn nhất của các nút trong cây
1. Bài toán tháp Hà Nội được phát biểu như sau: Input có 3 cái cọc và n cái đĩa xếp tại cọc 1 Output: chỉ
ra các bước thực hiện di chuyển n cái đĩa tử cọc 1 sang cọc Nên sử dụng giải thuật đệ quy, chỉ ra trường hợp gọi đệ
quy? n>1
2. Bằng cách chạy thử 1 thuật toán với 1 bộ dữ liệu, ta có thể khẳng định điều gì? Đáp án: Khẳng định
thuật toán sai nếu cho kết quả sai
3. Biểu diễn công thức (n - 2)*(n - 4) sử dụng ký hiệu O để biểu diễn độ phức tạp là gì? ⇒ Cả ba câu trên
đều sai
2. Biểu diễn dữ liệu trong bộ nhớ được biết đến với khái niệm là gì? Đáp án:Cấu trúc lưu trữ
C
1. Các kiểu dữ liệu cơ bản là: Đáp án: Các kiểu dữ liệu mà người lập trình được cung cấp sẵn từ
ngôn ngữ lập trình
2. Cài đặt danh sách bằng mảng có nghĩa là: ⇒ Dùng một mảng (array) để lưu trữ liên tiếp các phần tử
của danh sách bắt đầu từ vị trí đầu tiên của mảng.
3. Cấu trúc dữ liệu (CTDL) tiền định gì? ⇒ CTDL riêng của ngôn ngữ lập trình
3. Cấu trúc dữ liệu dùng để tìm kiếm theo chiều rộng (BFS) trong đồ thị là gì? Đáp án: Hàng đợi
4. Cấu trúc dữ liệu dùng để tìm kiếm theo chiều sâu trong đồ thị là gì? Đáp án: Ngăn xếp
5. Cấu trúc dữ liệu được dùng trong thuật toán đệ quy là gì? Đáp án: Ngăn xếp
4. Cấu trúc dữ liệu hàng đợi (Queue) hoạt động theo cơ chế nào? Đáp án: FIFO
6. Cấu trúc dữ liệu là … Đáp án:Cách lưu trữ dữ liệu trong bộ nhớ truy cập ngẫu nhiên (RAM), sao cho
nó có thể được sử dụng một cách hiệu quả
5. Cấu trúc dữ liệu mảng có các ưu điểm nào? ⇒ Cả 3 câu đều đúng
6. Cấu trúc dữ liệu nào sau đây cho phép xóa phần tử từ phía trước và bổ sung thêm phần tử vào phía
sau? Đáp án: Hàng đợi (Queue)
7. Cấu trúc dữ liệu nào thích hợp cho thao tác theo cơ chế FIFO (vào trước ra trước)? Đáp án: Hàng đợi
8. Cấu trúc dữ liệu nào thích hợp cho thao tác theo cơ chế LIFO (vào sau ra trước)? Đáp án: Ngăn xếp
7. Cấu trúc dữ liệu nào tương ứng với LIFO (Last in, first out)? Đáp án: Ngăn xếp (Stack)
9. Cấu trúc dữ liệu ngăn xếp (Stack) hoạt động theo cơ chế nào? Đáp án:LIFO
8. Cây nhị phân có mức bằng bao nhiêu? Đáp án: Không xác định
9. Cây nhị phân khác rỗng là cây như thế nào? Đáp án: Mỗi nút có không quá 2 nút con
10. Cây nhị phân là cây có bậc mấy? Đáp án: Cả ba câu đều sai
11. Chỉ ra khái niệm có tính chất đệ quy. Đáp án: Tính giai thừa của n (n!)
12. Chỉ ra kiểu dữ liệu cơ bản Đáp án: Float
13. Chỉ ra kiểu dữ liệu cơ bản. Đáp án: Float
14. Chiều cao của cây là gì? Đáp án: Mức lớn nhất của nút lá
10. Chiều cao của cây nhị phân có n nút là bao nhiêu? Đáp án: Tối thiểu là log2n
15. Chiều cao của một cây nhị phân hoàn chỉnh có n nút là bao nhiêu? Đáp án:log2n+1
11. Cho bài toán có thể giải bằng thuật toán đệ quy hoặc thuật toán lập. Cả 2 thuật toán đều có độ phức
tạp là O(n). Trong trường hợp này tại sao nên chọn thuật toán lập?: Đáp án: Thuật toán lập ít gây ra lỗi hơn
12. Cho bài toán: cho trước n là một số tự nhiên, tính n!. Chỉ ra trường hợp suy biến (chọn câu đúng nhất)?
Đáp án: với n =0 hoặc n = 1
13. Cho bài toán: cho trước n là một số tự nhiên, tính n!. Chỉ ra trường hợp gọi đệ quy ⇒ n > 1
16. Cho biết dạng đệ quy nào sau đây không phải là đệ quy trực tiếp? Đáp án: Đệ quy tương hỗ
14. Cho biết độ phức tạp của đoạn chương trình sau là bao nhiêu? Sum =0; for (j=0;j++)
(for(k=0;k<n*n;k++)sum++;) ⇒ O(n^3)
15. Cho biết độ phức tạp của đoạn lệnh sau: a=0 for (int i =0; i<n*n;i++) s+=i ⇒ O(n^2)
17. Cho cây được biểu diễn bằng danh sách sau: ((A(C(F),D(G),B(E(HD) Cho biết đường đi từ nút "" đến
nút "I" có độ dài bằng bao nhiêu? Đáp án:3
18. Cho cây được biểu diễn như sau: (a ( b (d, e (i, j)), c (f, g (k), h)). Cho biết bậc của cây này là bao
nhiêu? Đáp án: 3
19. Cho cây được biểu diễn như sau: (a ( b (d, e (i, j)), c (f, g (k), h)). Cho biết bậc của nút c là bao nhiêu?
Đáp án: 3
20. Cho cây được biểu diễn như sau: (a ( b (d, e (i, j)), c (f, g (k), h)). Cho biết mức của nút g là bao nhiêu?
ĐÁP ÁN: 3
21. Cho cây được biểu diễn như sau: (a ( b (d, e (i, j)), c (f, g (k), h)). Cho biết độ dài đường đi từ gốc đến
nút k là bao nhiêu? Đáp án:3
16. Cho cây được biểu diễn như sau: (a (b (d, e(i,j)),c(f, g(k),h)). Cho biết bậc của nút g ;à bao nhiêu? Đáp
án: 1
17. Cho cây nhị phân được biểu diễn như sau: (81 (69 (35 (49 (41 (44),51), 80), 91(93)) Cho biết đây là
cây gì? Đáp án: Cây nhị phân tìm kiếm
22. Cho cây nhị phân T có chiều cao là 6. Số nút tối đa có trên cây là bao nhiêu? Đáp án: 63
18. Cho cây nhị phân T. Số nút tối đa ở mức 7 là bao nhiêu? ⇒ 64
23. Cho cây nhị phân tìm kiếm được tạo từ dãy sau: 42 23 74 11 65 58 94 36. Để tìm một khóa có tồn tại
trên cây hay không trong trường hợp xấu nhất cần bao nhiêu phép so sánh? Đáp án: 4
19. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 42 23 74 11 65 58 94 36. Khoá nào nằm trên cây
con phải? Đáp án: 74,65,58,94
24. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 42 23 74 11 65 58 94 36. Để tìm khóa 60 có tồn tại
trên cây hay không cần bao nhiêu phép so sánh? Đáp án: 4
25. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 42 23 74 11 65 58 94 36. Cho biết cây con trái có
mấy nút? Đáp án:3
20. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 42 23 74 65 58 94 36. Để tim khóa 105 có tồn tại
trên cây hay không cần bao nhiêu phép so sánh: ⇒ 3
26. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 69 49 81 80 91 41 44 93 51 35
21. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 81 69 35 49 80 91 41 44 93 51. Cho biết thứ tự
duyệt cây theo thứ tự RLN là dãy số nào sau đây? Đáp án: 93 91 80 51 44 41 49 35 69 81
27. Cho cây nhị phân tìm kiếm được tạo từ dãy số sau: 81 69 35 49 80 91 41 44 93 51. Cho biết thứ tự
duyệt cây theo thứ tự NRL là đây số nào sau đây? Đáp án:81 91 93 69 80 35 49 51 41 44
22. Cho cây nhị phân tìm kiếm đượcc tạo từ dãy: 67 38 25 88 59 32 11 28 42 89 Sau khi xóa nút có giá trị
25, Cây được biểu diễn bằng cách nào sau đây? ⇒(67(38(28(11,32),59(42)),88(89)))
28. Cho cây nhị phân, phép duyệt theo thứ tự giữa (LNR) cho kết quả là một dãy tăng dần, Cây nhị phân
đó là loại cây nhị phân nào? Đáp án:Cây nhị phân tìm kiếm
23. Cho công thức đệ quy như sau: Ack (m,n) =n+1 nếu m=0 Ack (m,n) =Ack (m-1,1 ) nếu n=0 Ack (m,n)
= Ack(m-1,Ack (m,n-1) trong các trường hợp còn lại. Cho biết giá trị của Ack (1,2) là gì ⇒ Cả 3 đều sai
29. Cho công thức đệ quy: F(1) = 1; F(2) = 1; F(n) = F(n-1) + F(n-2) với n>2. Kết quả F(9) là gì? Đáp án:
34
24. Cho công thức đệ quy: F(1) = 1; F(2) = 2; F(3) = 2; F(n) = F(n-1) + 2*F(n-3) với n>3. Kết quả F(6) là
gì? : Đáp án: 12
30. Cho công thức đệ quy: F(1) = 1; F(2) = 2; F(3) = 3; F(n) = F(n-1) +2*F(n-3) với n>3. Kết quả F(6) là
gì? Đáp án:15
25. Cho công thức đệ quy: F(1) = 1; F(n) = n*F(n-1) với n>=2. Kết quả F(4) là gì? ⇒ 24
26. Cho công thức đệ quy:F(1)= 1; F(2) = 2; F(n) = F(n-1)+2*F(n-2) với n>2. Kết quả F(5) là gì? Đáp án:
16
27. Cho dãy K có 11 phần tử, để tìm trong K có khóa X hay không bằng thuật toán tìm nhị phân. Phần tử ở
vị trí nào được so sánh với X trong lần so sánh đầu tiên của thuật toán (vị trí đầu dãy là 0)?Trả lời 5
31. Cho dãy khoá đã sắp thứ tự K(k1,k2,k3,….,k11). Nếu ta muốn tìm kiếm trong K xem có khoá X không
và dùng phương pháp nhị phân thì đầu tiên ta so sánh X với khoá k thứ mấy: Đáp án: 6
32. Cho dãy số {4 7 0 9 2 5 3 1 8 6}. áp dụng phương pháp sắp xếp nổi bọt (Bubble sort) sau lần lặp đầu
tiên của giải thuật ta có kết quả: Đáp án: {0 4 7 1 9 2 5 3 6 8}
28. Cho dãy số a[] = { 29 40 63 54 17}, trong thuật toán sắp xếp Quick Sort để sắp xếp dãy tăng dần, chọn
phần tử có giá trị bằng 63 làm khóa, sau khi thực hiện vòng lặp do ...while ở lượt đầu tiên thì phần tử 63 đứng ở vị
trí thứ mấy trong dãy? Đáp án: 4
29. Cho dãy số a[] = { M=49 37 19 29 8 }, thuật toán sắp xếp nổi bọt (Bubble Sort) sắp xếp dãy số đã cho
thành dãy tăng dần, sau 1 bước thực hiện từ cuối dãy về đầu dãy, vị trí các phần tử trong dãy đã cho sẽ thay đổi
như thế nào? Đáp án: { 8, 19, 49, 37, 29}
33. Cho dãy số a[] = {100,3,60,35,2}, thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp dãy số đã cho
thành dãy tăng dần, sau 1 thao tác đầu tiên so sánh giá trị thì phần tử 35 sẽ nằm ở vị trí thứ mấy trong dãy (chỉ số
của phần tử đầu tiên là 0)? Đáp án: 4
1. Cho dãy số a[] = {100,3,60,35,2}, thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp dãy số đã cho
thành dãy tăng dần, sau 3 lượt so sánh giá trị thì dãy đã cho sẽ thay đổi như thế nào? Đáp án: 100,2,3,60,35
34. Cho dãy số a[] = {100,3,60,35,2}, trong thuật toán sắp xếp chọn (SelectionSort), sau 5 lần so sánh giá
trị của phần tử trong vòng lặp for thứ 2 (kết thúc vòng lặp for thứ 2) thì dãy đã cho ban đầu thay đổi như thế nào?
Đáp án:2,3,60,35,100
35. Cho dãy số a[] = {100,3,60,35,2}, trong thuật toán sắp xếp nhanh (Quick Sort), việc chọn phần tử có
giá trị 60 làm khóa để sắp xếp dãy tăng dần, sau thực hiện lệnh Do...while lần 1 thì các phần từ của dãy sẽ thay đổi
như thế nào? Đáp án: 2,3,60,35,100
36. Cho dãy số a[] = {42, 23, 74, 11, 65, 58}, kết quả thuật toán sắp xếp chèn để sắp xếp dãy số dãy tăng
dần, sau 4 bước thực hiện thì dãy số ban đầu sẽ thay đổi thành dãy nào sau đây? Đáp án: {11, 23, 42, 65, 74, 58}
37. Cho dãy số a[] = {42, 23, 74, 11, 65, 58}, thuật toán sắp xếp chọn (insertion sort) để sắp xếp dãy số
tăng dần, sau 2 bước thực hiện thì dãy ban đầu sẽ thay đổi thành dãy nào sau đây? Đáp án: {11, 23, 74, 42, 65,
58}
38. Cho dãy số a[] = {42, 23, 74, 11, 65, 58}, với thuật toán sắp xếp chọn (insertion sort) để có dãy tăng
dần, sau 4 bước thực hiện so sánh thì kết quả sẽ là dãy nào sau đây? Đáp án: {11, 23, 42, 58, 65,74}
30. Cho dãy số a[] = {42,23,74,11,65,58,94,36,99,87}, kết quả thuật toán sắp xếp Buble Sort để sắp xếp
dãy tăng dần, sau khi thực hiện bước 1 so sánh thì giá trị của 3 phần tử cuối của dãy là những số nào sau đây? Trả
lời 94,87,99
39. Cho dãy số a[] = {56 94 90 11 49}, thuật toán sắp xếp chèn (insertion sort) để sắp xếp dãy số đã cho
thành dãy tăng dần, sau 1 bước thực hiện (chỉ số i=1), thứ tự của các phần tử trong dãy như thế nào? Đáp án:56 94
90 11 49
31. Cho dãy số a[]={42,23,74,11,65,58}, thuật toán sắp xếp chèn (insertion sort) để sắp xếp dãy số đã cho
thành dãy tăng dần, sau 1 bước thực hiện, vị trí các phần tử trong dãy đã cho sẽ thay đổi như thế nào?: Đáp án:
{23,42,74,11,65,58}
32. Cho dãy số M: 25 20 9 5 7 4 13 17. Áp dụng giải thuật tìm kiếm tuyến tính với giá trị cần tìm: x = 9.
Sau khi tìm được x trong dãy, chỉ số I là bao nhiều? Đáp án: 2
33. Cho dãy số M: 52 34 12 3 2 84 71 23 29 7. dùng thuật toán sắp xếp chèn (insertion_Sort) để sắp xếp
dãy được cho. Cần thực hiện bao nhiêu lần chèn các phẩn tử vào dãy để sắp xếp dãy M có thứ tự tăng dần? Đáp
án: 8
34. Cho dãy số sau: { 1, 5, 15, 19, 25, 27, 29, 31,33,45,55,88,100}; Phần tử cần tìm là 19, trong lần phân
hoạch thứ 2 thì dãy cần phân hoạch là: Đáp án: 19, 25, 27
40. Cho dãy số sau: { 1, 5, 15, 19, 25, 27, 29, 31,33,45,55,88,100}; Phần tử cần tìm là 19, trong lần phân
hoạch thứ 3 thì dãy cần phân hoạch là: Đáp án:19
35. Cho dãy số sau: {1, 5 ,1 5, 19, 25 ,27, 31, 33, 45, 55 ,88, 100}; Phần tử cần tìm là 19, sau khi chọn
phần giữa để phân hoạch thì dãy con nào ra sẽ tìm tiếp theo?: Đáp án: Dãy con từ 0 đến 5
36. Cho đồ thị có hướng G có 3 đỉnh (0-2), biểu diễn bởi ma trận kề như sau{{0,1, 0}, {0,1,1}, {1, 0, 0}}.
Phát biểu nào sau đây là đúng khi nói về đường đi từ đỉnh 2 về đỉnh 0?Trả lời Không có đường đi nào có độ dài 2
37. Cho đồ thị có n đỉnh và m cung, được lưu trữ trên danh sách kề. Độ phức tạp của thuật toán BFS là bao
nhiêu? Đáp án: O(max(n,m)
41. Cho đồ thị có n đỉnh và m cung, được lưu trữ trên danh sách kề. Độ phức tạp của thuật toán DFS là
bao nhiêu? Đáp án: O(max(n,m))
38. Cho đồ thị có n đỉnh và m cung, được lưu trữ trên ma trận kề. Độ phức tạp của thuật toán DFS là bao
nhiêu? ⇒ O(n^2)
39. Cho đồ thị có n đỉnh và m cung, được lưu trữ trên ma trận kề. Độ phức tạp của thuật toán BFS là bao
nhiêu? ⇒ O(n^2)
40. Cho đồ thị G có n đỉnh. Để biểu diễn đồ thị G bằng ma trận kề thì ma trận đó phải có điều kiện nào?
Trả lời n hàng và n cột
42. Cho hàm đệ qui public void wow ( int n ) { if(n>1) { printf(“%”, n%2); wow(n/2);} else printf(“%”, n
%2);} Khi gọi wow(8) kết quả in ra màn hình là gì ? Đáp án 0 0 0 1
41. Cho hàm đệ qui Public void wow(int n) ( if( n> 1) wow (n/2); printf( “%d”, n+ “”);). Khi gọi wow (16)
kết quả in ra màn hình là: 1 2 4 8 16
42. Cho hàm đệ quy như sau: int CR(int n, int k) { if (k==0) || (k==n) return 1; return CR(n-1, k-1)+
CR/(n-1,k);} Cho biết hàm đệ quy trên thuộc loại để quy nào ? ⇒Đệ quy nhị phân
43. Cho hàm F được cài đặt như sau: int F(int n) { if(n<=1)return 1; else return n * F(n-1);} Độ phức tạp
của thuật toán của hàm F là bao nhiêu? Đáp án: O(n)
44. Cho hàm int F(int n) { if ( n < 2 ) return 1 ; else return (F(n -1) + F(n -2) ) ; }, kết quả của F(7) là gì?
Đáp án: 21
43. Cho hàm tính a mũ x như sau: int PowerA(int a, int n) { if(n==0)return 1; if(n==1) return a; int x=n/2;
int x=PowerA(int a,x); if((n%2)==0) return x*x ; else return x*x*a;} Cho biết độ phức tạp của thuật toán trên là
bao nhiêu ? Đáp án : O(log n)
45. Cho hàm tính giai thừa như sau: Long gthua (int n) { if (n==0) return 1; else..;} Chọn lệnh điền vào vị
trí: ⇒ return n*gthua(n-1)
44. Cho một đường đi gồm k đỉnh, trong đồ thị G (u1, ...,uk), trong đó u1≡uk, thì đường đi đó được gọi là
gì? Đáp án:Chu trình
46. Cho Stack gồm 5 phần tử {12, 5, 20, 23, 25}, trong đó 25 là phần tử ở đỉnh Stack. Để lấy ra phần tử
thứ 5 trong Stack ta phải làm thế nào? Đáp án: POP(25)
47. Chọn câu đúng nhất để mô tả thuật toán sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử: ⇒
Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ hơn phần tử đứng ngay
trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi lần đi chúng ta đưa được một phầntử trồi lên
đúng chỗ. Sau N–1 lần đi thì tất cả các phần tử trong mảng M sẽ có thứ tự tăng.
48. Chọn phát biểu đúng Đáp án: Một đối tượng được gọi là đệ quy, nếu nó được mô tả thông qua định
nghĩa của chính nó.
49. Chọn phát biểu đúng về độ dài của danh sách Đáp án: Độ dài của danh sách là số phần tử của danh
sách
45. Chọn phát biểu đúng? Đáp án: : Đối tượng đệ quy được định nghĩa bằng cách quy nạp từ những
khái niệm đơn giản nhất cùng dạng với nó
46. Chương trình có hai đoạn chương trình liên tiếp, có độ phức tạp lần lượt là O(n) và O(logn), độ phức
tạp của chương trình là gì? Đáp án : O(n)
50. Chương trình có hai đoạn lệnh lồng nhau, có độ phức tạp lần lượt là O(n) và O(logn), độ phức tạp của
chương trình là gì?Trả lời O(nlogn)
47. Cơ chế Heap trong sắp xếp vun đống là: Đáp án:Cây nhị phân đầy đủ với tính chất giá trị của nút cha
luôn lớn hơn giá trị hai nút con.
51. Có mấy cách để biểu diễn đồ thị? ⇒ 2
48. Có mấy cách duyệt đồ thị? Đáp án:2
52. Có mấy cách lưu trữ cây nhị phân? Đáp án: 2
53. Có mấy phương pháp tìm kiếm trong mảng: Đáp án: 2
49. Có mấy trường hợp xảy ra khi xóa một nút trên cây nhị phân tìm kiếm? Đáp án:3
50. Có mấy trường hợp xem xét khi đánh giá độ phức tạp thuật toán? Đáp án:Cả ba trường hợp
51. Cơ sở để lựa chọn thuật toán tốt, hoặc để cải tiến thuật toán là gì? Đáp án: Phân tích, đánh giá thuật
toán
52. Có thể khử đệ quy bằng phương pháp nào sau đây? Đáp án:Cả 2 đều đúng
53. Công cụ nào sau đây được dùng để diễn đạt thuật toán? Đáp án: Cả ba câu đều đúng
54. Công cụ nào sau đây được dùng để diễn đạt thuật toán? Đáp án: Cả ba câu đều đúng
D

1. Đặc trưng nào sau đây không phải là ưu điểm của phương pháp đệ quy? Trả lời: Tối ưu về mặt thời
gian
2. Đánh giá độ phức tạp của giải thuật là việc xác định … và … mà giải thuật cần để thực hiện giải một
bài toán.Trả lời Khoảng thời gian, dung lượng bộ nhớ máy tính
55. Danh sách đặc là danh sách có đặc tính gì? Đáp án:Không gian lưu trữ các phần tử nằm liên tiếp trong
bộ nhớ
3. Danh sách liên kết được dùng để biểu diễn một dãy các phần tử: a1, a2, ..., an với n>=0, nếu n=0 ta có
kết luận sau: ⇒ Danh sách rỗng
4. Đâu là kiểu dữ liệu có cấu trúc?Đáp án: Struct
5. Đâu là phương pháp biểu diễn đồ thị ? ⇒ Ma trận kề và danh sách
6. Đâu là phương pháp sắp xếp ngoài với các phương pháp sau ⇒Cả 3 phương pháp trên
56. Đâu là phương pháp sắp xếp trong với các phương pháp sau Đáp án: Tất cả đều sai
7. Dãy số FIbonaci là dãy số tự nhiên 1 1 2 3 5 8 13. Sử dụng giải thuật đệ quy để tính giá trị của
Fibonaci thứ n. Chỉ ra trường hợp suy biến: ⇒ n<3
8. Dãy số Fibonaci là dãy số tự nhiên:11 23 5 8 13 .Sử dụng giải thuật đệ quy để tính giá trị của số
fibonaci thứ n. Chỉ ra trường hợp gọi đệ quyTrả lời n >= 3
9. Để duyệt Cây nhị phân theo mức ta dùng cấu trúc dữ liệu nào sau đây? Đáp án: Hàng đợi
10. Để giải quyết các bài toán theo kiểu vét cạn, chúng ta cần áp dụng thuật toán đệ qui nào? Đáp án: Đệ
quy quay lui
11. Để giải quyết một bài toán trên máy tính cần xác định điều gì? Đáp án: Mục tiêu, công nghệ, thuật
toán
57. Để khử đệ qui chúng ta sử dụng cấu trúc dữ liệu nào sau đây? Đáp án Ngăn xếp (Stack)
12. Để lấy giá trị lớn nhất trong một mảng n số nguyên ta sử dụng hàm int max(int A[], int n) nào được cài
đặt theo đệ qui sau?:Đáp án: if (n==1) return A[0] else return( A[n-1)? A[n-1]: max(A, n-1));
58. Để lựa chọn một thuật toán tốt, ta sẽ căn cứ vào tiêu chuẩn nào sau đây? Đáp án: Cả ba câu trên đều
đúng
59. Để mô tả một các mối quan hệ nhiều - nhiều giữa các phần tử trong một tập hợp, ta nên sử dụng cấu
trúc dữ liệu nào? Đáp án: Đồ thị
60. Đệ quy gián tiếp là gì? Đáp án:Hàm chứa lời gọi đến hàm khác, mà ở hàm này lại chứa lời gọi đến
chính nó
13. Đệ quy phi tuyến là gì? Đáp án: Lời gọi đệ quy được thực hiện trong vòng lặp
61. Để tính tổng các số tự nhiên từ 1 điến mn, ta sử dụng hàm đệ qui int sum(int n) nào được cài đặt như
sau ? : Đáp án if(n==1) return 1 else return n + sum(n-1);
62. Định nghĩa nào sau đây là đúng với danh sách liên kết? Đáp án: Danh sách liên kết là tập hợp các
phần tử mà giữa chúng có một sự nối kết với nhau thông qua vùng liên kết của chúng
63. Độ dài của danh sách được đo bằng gì? Đáp án: Số lượng phần tử trong danh sách
64. Độ dài đường đi (path length) được đo thế nào? Đáp án:Bằng số nút trên đường đi - 1
14. Độ dài đường đi (path length) trong cây từ nút gốc đến nút x được đo như thế nào? Đáp án: Bằng số
nhánh cần đi qua kể từ gốc đến x
15. Độ dài đường đi trên đồ thị là gì? ⇒ Số lượng cung trên đường đi
16. Độ phức tạp của thuật toán tính giá trị của biểu thức 1+2+3+.+n là gì? Đáp án: O(n
17. Độ phức tạp của thuật toán tính giá trị của biểu thức n2+35n+6 là gì? ⇒ O(n^2)
18. Độ phức tạp trong trường hợp tốt nhất của thuật toán tìm kiếm nhị phân là bao nhiêu? Đáp án: O (1)
19. Độ phức tạp trong trường hợp tốt nhất của thuật toán tìm kiếm tuyến tính là bao nhiêu? Đáp án: O(1)
65. Độ phức tạp trong trường hợp xấu nhất của thuật toán tìm kiếm tuyến tính là bao nhiêu ? Đáp án O(n)
20. Độ phức tạp trung bình T(n) của thuật toán tìm kiếm 1 nút có khóa x trên cây nhị phân tìm kiếm là bao
nhiêu?Trả lời T(n) = O(log2n)
21. Đồ thị G là liên thông khi và chỉ khi? Đáp án: Có đường đi giữa hai đỉnh bất kỳ thuộc G
22. Đồ thị liên thông là gì? Đáp án: Đồ thị liên thông là đồ thị luôn tồn tại đường di giữa 2 đỉnh bất kỳ
66. Đồ thị vô hướng liên thông là gì? Đáp án: Phải tồn tại đường đi giữa hai đỉnh bất kỳ
67. Duyệt đồ thị theo phương pháp nào dưới đây ? Đáp án: Duyệt theo chiều rộng – BFS và Duyệt theo
chiều sâu - DFS
G
68. Giả sử một cây nhị phân có 8 nút, chiều cao tối đa của cây là bao nhiêu? Đáp án: 8
1. Giả sử một cây nhị phân có 8 nút, số tối thiểu các nút lá có thể có là bao nhiêu? Đáp án: 1
69. Giả sử T là một cây nhị phân có 14 nút. Chiều cao tối thiểu của T là bao nhiêu? Đáp án: 4
2. Giả sử ta có hai thuật toán P1 và P2 với thời gian thực hiện tương ứng là T1(n) = 100 ^2 và T2(n) =
5n^3. Với n<20, thuật toán nào sẽ thực hiện nhanh hơn? Đáp án: Thuật toán P2
3. Giải quyết bài toán thực tế bằng thuật toán trên máy tính cần phải làm gì? a. Tổ chức biểu diễn các đối
tượng thực tế; b. Xây dựng trình tự các thao tác xử lsy trên các đối tượng thực tế. => Đáp án: Cả A và B đều
đúng
4. Giải thuật là Đáp án: câu lệnh chặt chẽ, rõ ràng và xác định một trình tự các thao tác trên các đối
tượng dữ liệu. Đáp án: Dãy
5. Giải thuật sau thực hiện gì trong phương pháp sắp xếp vun đồng ? Void Sort(int A[] , int v, int n)
{ n=n+1; A[n]=vl upheap(n)} ⇒ Bổ sung một phần tử vào cây
6. Gọi a và b là độ phức tạp của thuật toán tìm kiếm tuyến tính và tìm kiếm nhị phân khi thực hiện tìm X
trong dãy A có thứ tự với n phần tử. Chọn kết quả đúng nhất?Trả lời a=O(n), b=O(log(n))
H
7. Hai vấn đề cần xem xét khi cài đặt thuật toán đệ quy là gì? Đáp án: Tổng kích thước biến cục bộ và
độ sâu tối đa của hàm đệ quy
70. Hàm đệ quy cơ bản gồm mấy phần? Đáp án: 2
8. Hàm kiểm tra danh sách có đầy hay không, với n là kich thước tối đa của danh sách;
inf full(danhsach *list) { … }Điền lệnh vào dấu … Đáp án: return (list ->len == n)
9. Hàm thể hiện độ phức tạp có dạng thường gặp là gì? Trả lời: Cả ba câu trên đều đúng
10. Hàng đợi là gì? Đáp án: Hàng đợi là một danh sách trong đó thao thác thêm một phần tử được thực
hiện ở một đầu và lấy ra một phần tử được thực hiện ở một đầu khác
11. Hãy chọn phát biểu đúng nhất về danh sách ⇒ Tất cả đều đúng
71. Hãy chọn phát biểu đúng trong các phát biểu dưới đây trong thuật toán tìm kiếm? Đáp án: Thuật
toán tìm kiếm nhị phân chỉ thực hiện đúng với các dãy đã có thứ tự
K
2. Khai báo kiểu danh sách chứa tối đa 100 số nguyên Đáp án: int len; int n = 100; int v[n];
72. Khi cài đặt danh sách liên kết, để thuận tiện khi di chuyển từ nút hiện tại sang nút sau và về nút trước
trong danh sách, ta sử dụng loại danh sách nào? Đáp án: Danh sách liên kết kép
73. Khi cài đặt đệ qui, trong thân của hàm có duy nhất một lời gọi hàm gọi lại chính nó một cách tường
minh, đó là kiểu đệ qui nào? Đáp án : Đệ qui tuyến tính
3. Khi cài đặt đệ qui, trong thân của hàm có hai lời gọi hàm gọi lại chính nó một cách tường minh, đó là
kiểu đệ qui nào? Đáp án: Đệ quy nhị phân
4. Khi cài đặt đệ qui, trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp, đó
là kiểu đệ qui nào?Trả lời Đệ qui phi tuyến
5. Khi cài đặt thuật toán đệ qui, trong thân của hàm này có lời gọi hàm đến hàm khác và trong thân của
hàm kia có lời gọi hàm tới hàm này, đó là kiểu đệ qui nào? ⇒ Đệ qui tương hỗ
6. Khi chèn một phần tử vào danh sách (cài đặt bằng mảng) yêu cầu cần Đáp án: Độ dài của danh sách
nhỏ hơn độ dài của mảng
7. Khi đánh giá độ phức tạp của câu lệnh for ta cần đánh giá điều gì? Đáp án: Số lần lặp và độ phức tạp
của câu lệnh bên trong vòng lặp
8. Khi đánh giá độ phức tạp của câu lệnh If ta cần đánh giá điều gì? Đáp án: Độ phức tạp của việc kiểm
tra điều kiện và độ phức tạp của câu lệnh bên trong thân If
9. Khi đổi một số nguyên từ hệ thập phân sang hệ nhị phân thì người ta dùng phép chia liên tiếp cho 2 và
lấy các số dư (là các chữ số nhị phân) theo chiều ngược lại. Cơ chế sắp xếp này chính là cơ chế hoạt động của cấu
trúc dữ liệu: ⇒ Ngăn xếp (stack)
10. Khi nào thì cây được gọi là có thứ tự? Đáp án: Khi thay đổi vị trí các cây con tạo ra cây con mới
11. Khi phân tích thời gian thực hiện của thuật toán, thông thường phân tích cái gì? Trả lời: Số các phép
tính cơ bản khi thực hiện thuật toán
74. Khi thiết kế thuật toán đệ qui, chúng ta phải thực hiện tối thiểu mấy bước? Đáp án: 3 bước
12. Khi tìm một phần tử trong thuật toán tìm kiếm tuyến tính từ vị trí đầu mảng, trong trường hợp xấu nhất
là trường hợp phần từ cần tìm nằm ở đâu? Đáp án: Phần tử nằm cuối cùng hay không xuất hiện trong mảng
75. Khi tìm một phần tử trong thuật toán tìm kiếm tuyến tính từ vị trí đầu mảng, trong trường hợp trung
bình là trường hợp phần từ cần tìm nằm ở đâu? Đáp án: Phần tử ở giữa mảng
76. Khi xóa một nút có 2 cây con trên cây nhị phân tìm kiếm có mấy bước? Đáp án: 3
13. Khi xóa một nút trong cây nhị phân tìm kiếm mà nút đó có 2 con, trước hết ta thực hiện? Đáp án:
Thay thế giá trị nút đó bởi giá trị trên nút con cự phải trên cây trái
14. Khởi tạo danh sách rỗng void init(danhsach *list){.} Điền lệnh vào dấu . Đáp án: list->len=0;
15. không tìm thấy phần tử có giá trị là X
16. Khử đệ quy đuôi có nghĩa là gì? Đáp án: Tính toán trước một số bước để hạn chế số lần gọi đệ quy
17. Kí hiệu danh sách là list, n là số phần tử trong danh sách. Chọn phát biểu đúng về hàm make(list) để
tạo danh sách các phần tử Đáp án: Tạo danh sách tức là nhập giá trị cho các phần tử trong danh sách
18. Kí hiệu danh sách là list, n là số phần tử trong danh sách. Chọn phát biểu đúng về hàm view(list) để
duyệt danh sách ⇒ Duyệt danh sách tức là in giá trị của các phần tử trong danh sách ra màn hình
19. Kí hiệu danh sách là list, n là số phần tử trong danh sách. Chọn phát biểu đúng về hàm full(list) để
kiểm tra danh sách có đầy hay khôngTrả lời Kiểm tra danh sách có đầy hay không tức là việc kiểm tra danh sách
có độ dài =n
77. Kí hiệu danh sách là list, n là số phần tử trong danh sách. Chọn phát biểu đúng về hàm empty(list) để
kiểm tra danh sách rỗng hay không. Đáp án: Kiểm tra danh sách có rỗng hay không tức là kiểm tra danh
sách có độ dài =0 hay không
78. Kí hiệu danh sách là list, n là số phần tử trong danh sách. Chọn phát biểu đúng về hàm init(list) để khởi
tạo danh sách rỗng Đáp án: Tạo danh sách rỗng tức là việc tạo danh sách có độ dài = 0
20. Kí hiệu danh sách là list, vị trí của phần tử trong danh sách là p (position), n là số phần tử trong danh
sách, hàm insert(x,p,list) để bổ sung một phần tử x vào danh sách tại vị trí thứ p, vị trí p phải nằm trong phạm vi:
⇒ p=1 đến n
21. Kí hiệu danh sách là list, vị trí của phần tử trong danh sách là p (p=1...n), n là số phần tử trong danh
sách. Chọn phát biểu đúng về việc gọi hàm delete để xóa 1 phần tử ra danh sách. ⇒ delete(p,list)
22. Kí hiệu danh sách là list, vị trí của phần tử trong danh sách là p (position), độ dài tối đa của danh sách
n(số lượng phần tử lớn nhất của list), độ dài thực sự của danh sách là len (length). Chọn phát biểu đúng. ⇒ Hàm để
lấy vị trí của phần tử có giá trị x trong danh sách list: getp(x,list)
23. Kí hiệu danh sách là list, vị trí của phần tử trong danh sách là p (p=1Trả lời n), n là số phần tử trong
danh sách. Chọn phát biểu đúng về việc gọi hàm getv để lấy giá trị của phần tử thứ p ra khỏi danh sáchTrả lời
getv(p,list)
79. Kiểu dữ liệu trừu tượng (ADT) gồm mấy thành phần? Đáp án: 2
24. Kiểu dữ liệu trừu tượng bao gồm các thành phần nào? ⇒ Tập các đối tượng và các thao tác
25. Kiểu dữ liệu trừu tượng là … Đáp án: Kiểu dữ liệu mà người lập trình phải tự xây dựng dựa trên các
kiểu dữ liệu cơ bản được cung cấp từ ngôn ngữ lập trình.
26. Ký hiệu nào sau đây dùng để biểu diễn một thao tác trong thuật toán bằng lưu đồ? ⇒ Hình chữ nhật
27. Lý thuyết thuật toán quan tâm điều gì? Đáp án: Cả ba câu trên đều đúng ( 3 câu là: Giải được bằng
thuật toán b. Tối ưu hóa c. Triển khai thuật toán)
M
1. Mô hình toán học với một tập hợp các phép toán, định nghĩa trên một mô hình đó được gọi là gì? ⇒
Một kiểu dữ liệu trừu tượng
2. Mối quan hệ giữa cấu trúc dữ liệu và giải thuật có thể minh hoạ bằng đẳng thức Đáp án: Cấu trúc dữ
liệu + Giải thuật = Chương trình.
3. Một cấu trúc dữ liệu có bao nhiêu cấu trúc lưu trữ? ⇒ Có thể có nhiều cấu trúc lưu trữ
80. Một đồ thị G, có (x,y) khác (y,x) thì G được gọi là gì? Đáp án: Đồ thị phân biệt
4. Một đồ thị vô hướng G=(V,E) được gọi là liên thông nếu:Trả lời Luôn tìm được đường đi giữa 2 đỉnh
bất kỳ trong đồ thị
81. Một thuật toán có lời gọi lại chính nó trực tiếp hay gián tiếp, được gọi là gì? Đáp án: Đệ qui
N
82. Nếu các ký tự D, C, B, A được bổ sung lần lượt vào Queue theo thứ tự như liệt kê (ký tự D bổ sung
trước nhất), và khi lấy ra khỏi Queue, thứ tự của các ký tự trên sẽ là gì? Đáp án: DCBA
1. Nếu dữ liệu được sắp xếp theo thứ tự ta áp dụng phương pháp tìm kiếm nào ? ⇒ Cả tuyến tính và nhị
phân đều được
2. Nếu dữ liệu không được sắp xếp theo thứ tự ta áp dụng phương pháp tìm kiếm nào ? ⇒Tuyến tính
83. Nhược điểm của danh sách liên kết là gì? Đáp án: : Tốn nhiều chi phí khi duyệt danh sách
3. Nhược điểm của thuật toán đệ quy so với thuật toán lặp là gì? ⇒ Tốn bộ nhớ khi thực thi
4. Nút có khóa lớn nhất trong cây nhị phân tìm kiếm khác rỗng là nút nào? Đáp án: Nút con bên phải
nhất
5. Nút có khóa nhỏ nhất trong cây nhị phân tìm kiếm khác rỗng là nút nào? ⇒Nút con bên trái nhất
P
1. Phát biểu nào đúng về đồ thị vô hướng? Đáp án: Là đồ thị có các cạnh không có hướng
2. Phát biểu nào sau đây đúng với khái niệm cấu trúc lưu trữ? Đáp án: Cách biểu diễn tối ưu của cấu
trúc dữ liệu trên bộ nhớ của máy tính
3. Phát biểu nào sau đây không đúng đối với cây nhị phân? ⇒ Là cây không có thứ tự
84. Phát biểu nào sau đây không đúng khi nói về mối quan hệ giữa cấu trúc dữ liệu và thuật toán? Đáp án:
: Thuật toán phải thay đổi khi cấu trúc dữ liệu thay đổi
4. Phát biểu nào sau đây là đúng khi nói về cấu trúc dữ liệu cây?: Cả ba câu đều đúng
5. Phát biểu nào sau đây là đúng khi nói về đặc điểm của danh sách? ⇒ Cả 2 đều đúng
6. Phát biểu nào sau đây là đúng khi nói về danh sách liên kết kép: ⇒ Thành phần liên kết có 2 mối liên
kết với 2 phần tử khác trong danh sách
7. Phát biểu nào sau đây là đúng khi nói về thuật toán đệ qui quay lui? Đáp án: Cả ba câu đều đúng
( Tìm lời giải bằng phương pháp thử - sai b. Phải ghi nhận trạng thái để quay lui c. Là một dạng bài toán vét cạn)
8. Phát biểu nào sau đây là đúng về danh sách liên kết? Đáp án: Danh sách liêt kết có thể thêm, xóa
phần tử tại vị trí bất kỳ
9. Phát biểu nào sau đây là đúng với cây nhị phân có chiều cao là h? Đáp án: Số nút tối đa có thể có
trong cây là 2^h -1
10. Phát biểu nào sau đây là đúng? Đáp án: Danh sách liên kết dễ dàng thêm/bớt phần tử vào danh sách
85. Phát biểu nào sau đây là đúng? Đáp án: Luôn tồn tại một đường đi duy nhất từ đỉnh đến một nút
bất kỳ trong cây
86. Phát biểu nào sau đây là đúng? Đáp án:Cây nhị phân đầy đủ là cây nhị phân hoàn chỉnh
11. Phát biểu nào sau đây là sai đối với dãy A, n phần tử được gọi là Heap? ⇒ Phần tử đầu dãy là phần tử
nhỏ nhất
12. Phát biểu nào sau đây là sai khi chọn để điền vào dấu Đáp án: trong phát biểu sau: "Thuật toán là
một dãy hữu hạn các thao tác, trong đó? Đáp án: Thứ tự thao tác không quan trọng
13. Phát biểu nào sau đây là sai khi nói về ngăn xếp? Đáp án: Cả ba câu đều sai ( 3 câu sai là: a. Có thể
cài đặt ngăn xếp bằng mảng b. Có thể cài đặt ngăn xếp bằng bằng danh sách liên kết c. Ngăn xếp là kiểu tổ chức
dữ liệu theo kiểu FILO (first-in, last-out) )
14. Phát biểu nào sau đây là sai về cây nhị phân? Đáp án: Tất cả các cây nhị phân đều phải có ít nhất một
nút
15. Phát biểu nào sau đây là sai về danh sách đặc? ⇒ Không thể thêm, xóa phần tử trong danh sách đặc
16. Phát biểu nào sau đây là sai về danh sách liên kết? Đáp án: Cả ba câu đều sai ( 3 câu sai là: Việc lưu
trữ các phần tử trong danh sách liên kết giống lưu trữ các phần tử trong mảng; Các phần tử trong danh sách liên
kết không cần phải lưu trữ liền kề trong bộ nhớ; Danh sách liên kết là tập hợp các nút, bao gồm 2 phần, phần thông
tin và phần liên kết đến nút kế tiếp trong danh sách)
87. Phát biểu nào sau đây là sai? Đáp án: Danh sách đặc chỉ được phép bổ sung phần tử
17. Phát biểu nào sau đây là sai? ⇒ Hàm đệ qui phải trả về kiểu int
88. Phát biểu nào sau đây là sai? Đáp án: Độ phức tạp của thuật toán thêm/bớt một phần tử trong
danh sách đặc tương đương O(1)
89. Phát biểu nào sau đây là sai? Đáp án: Thuật toán đệ quy luôn có độ phức tạp lớn hơn so với độ
phức tạp của các thuật toán khác khi cùng giải quyết một bài toán
90. Phát biểu nào sau đây sai đối với đồ thị vô hướng G có n đỉnh? Đáp án:Giữa 2 đỉnh bất kỳ thuộc G,
luôn tồn tại đường đi
91. Phát biểu nào sau đây sai khi nói về danh sách liên kết Đáp án sai : Danh sách liên kết là một tập hợp
các phần tử nằm liên tiếp nhau trong bộ nhớ
18. Phát biểu nào sau đây sai? Đáp án: Cài đặt theo đệ qui làm cho chương trình ít tốn bộ nhớ
92. Phát biểu nào sau đây sai? Đáp án: O(2n) có độ phức tạp nhỏ hơn O(3n+5)
19. Phương pháp nào sau đây không được dùng để biểu diễn cây?Trả lời Hình vẽ
a. Phương pháp nào sau đây không sử dụng để khử đệ quy? Đáp án:Cả ba câu đều sai
93. Phương pháp sắp xếp nhanh (Quick Sort) chính là phương pháp Đáp án:Phân đoạn
94. Quá trình giải quyết bài toán được thực hiện bằng việc chia bài toán lớn thành các bài toán nhỏ hơn để
giải quyết, được áp dụng theo chiến lược nào sau đây? Đáp án:Chia để trị
S
1. Sắp xếp theo thứ tự tăng dần của cấp thời gian thực hiện chương trình. Chú ý: (log2n) = Log cơ số 2
của n ⇒ O(1),O(log2n),O(n),O(nlog2n)
a. Sau khi xóa nút có giá trị 69. Cây được biểu diễn bằng danh sách nào sau dây? Đáp án:
51(49(41(35,44)),81(90,91(93)))
2. Sau một số ... bước thực hiện giải thuật cho chúng ta đạt được kết quả mong muốn. ⇒ Hữu hạn
3. Số lần lập của câu lệnh foreach trong việc duyệt một tập hợp là bao nhiêu? Đáp án: Số phần tử được
cấp phát của tập hợp
4. Số nút tối đa ở mức 5 trong cây nhị phân là bao nhiêu? Đáp án: 16
5. Số nút tối đa ở mức i trong cây nhị phân là bao nhiêu? ⇒ 2^(i-1)
6. Số nút tối đa trong cây nhị phân có chiều cao bằng 5 là bao nhiêu?==>31
T
1. Tại sao phải khử đệ quy? Đáp án: Cả 2 đều đúng
1. Thao tác nào dưới đây thực hiện được trên Ngăn xếp (Stack)?Trả lời Thêm và loại bỏ phần tử luôn
thực hiện tại vị trí đỉnh (top)
2. Thao tác Push và Pop đề cập tới cấu trúc dữ liệu nào của ngôn ngữ C? ⇒Stack
3. Thao tác Push và Pop đề cập tới cấu trúc dữ liệu nào sau đây? ⇒ Ngăn xếp (Stack)
4. Thao tác thêm phần tử (insert) và lấy phần tử (remove) thường đề cập tới cấu trúc dữ liệu nào? ⇒
Hàng đợi
5. Thao tác xử lý mỗi phần tử trong danh sách thường được biết đến với tên gọi là gì? ⇒ Duyệt
2. Thế nào là phép toán cơ bản? Đáp án: Phép toán có thể thực hiện với thời gian bị chặn không phụ
thuộc vào kích thước dữ liệu
6. Thế nào là sắp xếp ngoài ⇒ Sắp xếp ngoài là sắp xếp dữ liệu không cần đến bộ nhớ trong máy tính mà
chỉ cần các đối tượng được lưu trữ bằng bộ nhớ ngoài.
3. Thế nào là sắp xếp trong Đáp án:Sắp xếp trong là sự sắp xếp dữ liệu được tổ chức trong bộ nhớ trong
của máy tính, ở đó ta có thể sử dụng khả năng truy nhập ngẫu nhiên của bộ nhớ
4. Thời gian thực hiện của một thuật toán được tính toán ra kết quả là t(n) = 2*n + n*logn. Ký hiệu O của
độ phức tạp thuật toán trên là gì? Đáp án: O(nlogn)
7. Thời gian thực hiện thuật toán để thêm một nút vào sau nút p (nút cuối của một danh sách liên kết) là
bao nhiêu? Đáp án: O(1)
5. Thời gian thực hiện thuật toán tìm kiếm 1 phần tử trong danh sách liên kết có chiều dài n trong trường
hợp xấu nhất là bao nhiêu? Đáp án: O(n)
6. Thời gian tối đa để thực hiện thuật toán với dữ liệu đầu vào kích thước n được kí hiệu là gì? Đáp án:
O(g(n)) - O lớn
8. Thời gian tối thiểu để thực hiện thuật toán với dữ liệu đầu vào kích thước n được kí hiệu là gì? Đáp
án: O(g(n)) - O lớn
7. Thứ tự nào sau đây là thứ tự đúng, khi sắp xếp các thuật toán từ chậm nhất đến nhanh nhất? Đáp án:
O(logn), O(n), O(n^m), O(2^n), O(n!)
9. Thuật ngữ nào dưới đây được sử dụng để mô tả một thuật toán có độ phức tạp là O(n)? ⇒ Độ phức tạp
tuyến tính
8. Thuật toán đệ qui sau long Fibo (int n) { if(n==0 II n==1) return Fibo(n-1) + Fibo(n-2);}\Khi gọi
Fibo(8), kết quả là bao nhiêu? Đáp án : 34
10. Thuật toán đệ quy nào sau đây có dữ liệu không bị suy biến khi gọi đệ quy? ⇒ Đệ quy quay lui
11. Thuật toán Quicksort cài đặt bằng phương pháp đệ quy thuộc dạng đệ quy nào? Trả lời: Đệ quy nhị
phân
12. Thuật toán sắp xếp nào sau đây sử dụng chiến thuật chia để trị?Trả lời Nhanh (Quick Sort)
9. Thuật toán sắp xếp nào sau đây, có thời gian thực hiện trong trường hợp xấu nhất không phải là
O(n^2)? Đáp án:HeapSort
13. Thuật toán tìm kiếm nhị phân được áp dụng cho cấu trúc dữ liệu nào dưới đây? Đáp án: Một mảng
các phần tử đã sắp xếp
14. Thuật toán tìm kiếm tuyến tính: Tìm phần tử dãy số a có giá trị bằng x nhập từ bàn phím ? B1: Gán
kt=0; // Biến kiểm tra B2 Với i=0, n-1 so sánh a[ i] với x, Nếu a[i] =x thì kt =1 và kết thúc ktra, B3: Kiểm tra giá
trị kt, nếu kt=1 thì thông báo “Tìm thấy” ngược lại thông báo “ Khoogn tìm thấy” chọn thứ tự thực hiện đúng: ⇒
B1 B2 B3
15. Thường ta coi T(n) là thời gian thực hiện chương trình trong trường hợp xấu nhất trên dữ liệu vào có
kích thước n, tức T(n) là gì? Đáp án: Thời gian lớn nhất để thực hiện chương trình đối với mọi dữ liệu vào có
cùng kích thước n
10. Tiêu chí nào sau đây đánh giá một cấu trúc dữ liệu tốt? Đáp án: Cả ba câu đều đúng
16. Tìm từ trong từ điển dựa trên phương pháp tìm kiếm nào phù hợp nhất Đáp án: Nhị phân
17. Tính chất nào sau đây không phải đặc trưng của thuật toán?: Đáp án: Có lời giải phụ thuộc vào cấu
trúc dữ liệu
18. Tính chất quan trọng của danh sách Đáp án: : Các phần tử của danh sách có thứ tự tuyến tính theo
vị trí xuất hiện của chúng (position)
19. Tính chất quan trọng đối với đệ quy là gì? Đáp án: Tính hữu hạn
20. Tổ chức lưu trữ cây nhị phân sử dụng mảng một chiều thì có hiệu quả đối với loại cây nhị phân nào
nhất? Đáp án: Cây nhị phân hoàn chỉnh
21. Trong biểu diễn cây nhị phân bằng mảng, nút con trực tiếp của nút gốc ở vị trí nào? ⇒ 2
22. Trong các giải thuật sắp xếp, giải thuật nào áp dụng phương pháp "Chia để trị"? ⇒ Quick sort, Merge
sort
11. Trong các phát biểu về phương pháp sắp xếp nổi bọt (Bubble_Sort) sau, hãy chọn phát biểu sai: Đáp
án: Không nhận diện được được tình trạng dãy đã sắp xếp
23. Trong các thủ tục sau, thủ tục nào không được cài đặt đối với cấu trúc mảng? ⇒ Lưu trữ mảng
24. Trong đánh giá độ phức tạp của thuật toán, độ phức tạp của câu lệnh gán là gì?Trả lời O(1)
25. Trong đoạn chương trình có hai vòng lặp for lồng nhau, qui tắc nào sau đây là chính xác để đánh giá
độ phức tạp của thuật toán? ⇒ Qui tắc nhân
12. Trong giải thuật sắp xếp vun đống, ta có 4 thủ tục con (Insert - thêm 1 phần tử vào cây;Downheap -
vun đống lại sau khi loại một phần tử khỏi Heap, Upheap- vun đống sau khi thêm một phần tử vào cây; Remove -
loại 1 phần tử khỏi cây nhị phân). Để sắp xếp các phần tử trong dãy theo phương pháp vun đống, ta thực hiện 4 thủ
tục trên theo thứ tự như thế nào? Đáp án: Insert – Upheap – Remove – Downheap
26. Trong giải thuật tìm kiếm nhị phân, độ phức tạp trong trường hợp tốt nhất bằng bao nhiêu: Đáp án: 1
27. Trong giải thuật tìm kiếm tuyến tính, độ phức tạp trong trường hợp tốt nhất bằng bao nhiêu: ⇒ 1
28. Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ trỏ tới Front của Q, R là con trỏ trỏ tới Rear
của Q. Khi loại bỏ một phần tử vào Queue, thì R và F thay đổi thế nào? ⇒ F=F+1, R không thay đổi
29. Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ trỏ tới Front của Q, R là con trỏ trỏ tới Rear
của Q. Khi thêm một phần tử vào Queue, thì R và F thay đổi thế nào? Trả lời: F không thay đổi, R=R+1
30. Trong một cây nhị phân hoàn chỉnh, với chiều cao là 3 thì số nút tối thiểu trên cây T là bao nhiêu?Trả
lời 4
13. Trong phép duyệt cây nhị phân có 15 nút theo thứ tự LRN, nút gốc có thứ tự bao nhiêu? Đáp án: 15
14. Trong phép duyệt cây nhị phân có 24 nút theo thứ tự LRN, nút gốc có thứ tự bao nhiêu? Đáp án: 24
15. Trong thuật toán tìm kiếm tuyến tính, để tìm một phần tử trong mảng có n phần tử, thời gian thực hiện
thuật toán trong các trường hợp tốt nhất, xấu nhất, trung bình lần lượt là bao nhiêu? Đáp án:O(1), O(n), O(n/2)
16. Tư tưởng của giải thuật tìm kiếm nhị phân là: Đáp án: Tại mỗi bước tiến hành so sánh X với phần
tử ở giữa của dãy, dựa vào bước so sánh này quyết định giới hạn dãy tìm kiếm nằm ở nửa trên, hay nửa
dưới của dãy hiện hành.
31. Tư tưởng của giải thuật tìm kiếm trên cây nhị phân tìm kiếm là: ⇒ Tìm kiếm dựa vào cây nhị tìm
kiếm: Nếu giá trị cần tìm nhỏ hơn gốc thì thực hiện tìm kiếm trên cây con trái, ngược lại ta việc tìm kiếm được
thực hiện trên cây con phải.
32. Tư tưởng của giải thuật tìm kiếm tuần tự là: Đáp án: So sánh X lần lượt với cac phần tử thứ nhất,
thứ hai, .. của dãy cho đến khi gặp phần tử có khóa cần tìm
17. Ưu điểm của danh sách liên kết so với danh sách đặc là gì? Đáp án: Chèn/xóa một phần tử ở giữa
danh sách dễ dàng
18. Ưu điểm của thuật toán đệ qui là gì? Đáp án: : Sáng sủa, dễ hiểu, nêu rõ bản chất vấn đề
19. Với đoạn mã sau, nếu các phần tử đưa vào Stack theo thứ tự “ 1 1 0 1” thì các phần tử được loại khỏi
Stack theo thứ tự nào ? do { r=Pop(S[T]; printf(“%d”,r) }while(T>0); Đáp án : 1, 0,1, 1
33. void InsertionSort(int a[], int n) int i, j, tg; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (a[j]
< a[i]) { a [i] =a[j] ; a[j] =tg;}. Điền lệnh vào dấu: ⇒ tg=a[i];
20. Xoá 1 phần tử thứ p của danh sách list, Thuật toán như sau; 1. Nhập giá trị cho p từ bàn phím 2 giảm
độ dài của danh sách đi 1 3 Kiểm tra nếu danh sách không rỗng 4 Dịch chuyển các phàn tử của danh sách từ vị trí
thứ p-1..len-1 sang trái 1 vị trí 5 Giá trị phần tử tại vị trí p trên danh sách đã bị ghi đè giá trị ( bị xoá) 6 Kiểm tra
giá trị của p nếu hợp lệ ( p=1..len) chon thứ tự đúng Đáp án : 163452
Y
1. Ý tưởng phương pháp sắp xếp chèn (insertion sort) là: Đáp án: Lần lượt lấy phần tử của danh sách chèn vị
trí thích hợp của nó trong dãy bằng cách dời các phần tử lớn hơn sang phải 1 vị trí.
2. Ý tưởng phương pháp sắp xếp chọn tăng dần (selection sort) là: ⇒ Chọn phần tử bé nhất trong danh
sách và sắp xếp vào vị trí thứ nhất, tiếp theo chọn phần tử bé nhất trong dãy n-1 phần tử còn lại sắp xếp vào vị trí
đã có thứ tự tiếp theo.
3. Ý tưởng phương pháp sắp xếp nhanh (Quick sort) là: ⇒ Lần lượt chia dãy phần tử thành hai dãy con
bởi một phần tử khoá (dãy con trước khoá gồm các phần tử nhỏ hơn khoá và dãy còn lại gồm các phần tử lớn hơn
khoá).
4. Ý tưởng phương pháp sắp xếp trộn (Merge sort) là. Đáp án:Phân đoạn dãy thành nhiều dãy con và lần
lượt trộn hai dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
5. Ý tưởng phương pháp sắp xếp vun đống (Heap Sort) là: Đáp án: Lần lượt tạo đống cho cây nhị phân
(phần tử gốc có giá trị lớn nhất) và loại phần tử gốc ra khỏi cây đưa vào dãy sắp xếp.
6. Yếu tố thời gian khi xem xét tính hiệu quả của một thuật toán được xác định phụ thuộc bởi đại lượng
nào? ⇒ Số các phép tính cơ bản khi thực hiện thuật toán.

You might also like