You are on page 1of 70

Cấu trúc dữ liệu và giải thuật

Câu 1: Giải thuật đệ quy là:

 Trong giải thuật của nó có lời gọi tới chính nó nhưng với phạm vi nhỏ hơn.
 Trong giải thuật của nó có lời gọi tới chính nó nhưng với phạm vi lớn hơn.
 Trong giải thuật của nó có lời gọi tới một giải thuật khác đã biết kết quả.
 Trong giải thuật của nó có lời gọi tới chính nó.

Câu 2: Cho hàm đệ qui sau:


Function Factorial(n)
Begin
if n= 0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Sau mỗi lần gọi đệ quy thì giá trị của n là:

 Giảm đi 1
 Tăng lên 1
 N=0
 N=1

Câu 3: Có Hàm đệ qui sau:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Dòng lệnh "if n=0 then Factorial:=1" là:

 Điều kiện dừng đệ quy


 Điều kiện không thực hiện đệ quy
 Lặp vô hạn
 Lặp 1 lần

Câu 4: Có Hàm đệ qui sau giải bài toán gì?:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;

 Tính giai thừa n


 Tính số cặp thỏ sau n tháng
 Tính n^n (n mũ n).
 Tính tích: 1*2*3*…*n

Câu 5: Có Hàm đệ qui sau:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Kết quả bằng bao nhiêu khi n=3

 6
 2
 9
 8

Câu 6: Hàm đệ qui cho kết quả thế nào?


Function Factorial(n)
Begin
Factorial := n*Factorial(n-1);
End;

 Lặp vô hạn vì không có điều kiện dừng


 Chương trình báo lỗi
 Tính giai thừa n
 Tính số cặp thỏ sau n tháng.

Câu 7: Dãy số Fibonacci bắt nguồn từ bài toán cổ về việc sinh sản của các cặp thỏ. Bài toán được
đặt ra như sau:
Các con thỏ không bao giờ chết.
Hai tháng sau khi ra đời một cặp thỏ mới sẽ sinh ra một cặp thỏ con.
Khi đã sinh con rồi thì cứ mỗi tháng tiếp theo chúng lại sinh được một cặp con mới.
Giả sử bắt đầu từ một cặp thỏ mới ra đời thì đến tháng thứ 5 sẽ có bao nhiêu cặp?

 5 cặp
 10 cặp
 9 cặp
 12 cặp

Câu 8: Cho giải thuật đệ quy sau:


Function F(n)
Begin
if n<=2 then F:=1
else F := F(n-1) + F(n-2);
End;
Dòng lệnh “if n<=2 then F:=1” đóng vai trò:

 Điều kiện dừng đệ quy


 Điều kiện không thực hiện đệ quy
 Lặp vô hạn
 Lặp 1 lần

Câu 9: Cho giải thuật đệ quy sau:


Function F(n:integer):integer;
Begin
if n<=2 then F:=1
else F := F(n-2) + F(n-1)
End;
Khi n=4 kết quả của bài toán trên là:
 3
 8
 10
 11

Câu 10: Đặc điểm của giải thuật đệ quy:

 Tất cả đều đúng


 Trong thủ tục đệ quy có lời gọi đến chính thủ tục đó
 Sau mỗi lần có lời gọi đệ quy thì kích thước của bài toán được thu nhỏ hơn trước.
 Có một trường hợp đặc biệt, trường hợp suy biến Khi trường hợp này xảy ra thì bài toán còn
lại sẽ được giải quyết theo một cách khác

Câu 11: giải thuật đệ quy của bài toán "Tháp Hà Nội" như sau:
Procedure Chuyen(n, A, B, C)
Begin
if n=1 then chuyển đĩa từ A sang C
else begin
call Chuyen(n-1, a, C, B);
call Chuyen(1, A, B, C);
call Chuyen(n-1, B, A, C) ;
end;
End;
Khi n=3 có bao nhiêu bước chuyển?

 15 bước
 14 bước
 8 bước
 16 bước

Câu 12: Danh sách tuyến tính là:

 Danh sách mà quan hệ lân cận giữa các phần tử được xác định.
 Danh sách tuyến tính là một danh sách rỗng.
 Danh sách tuyến tính là một danh sách có dạng (a1, a2, ..., an).
 Danh sách dạng được lưu dưới dạng mảng.

Câu 13: ưu điểm của việc cài đặt danh sách bằng mảng:

 việc truy nhập vào phần tử của mảng được thực hiện trực tiếp dựa vào địa chỉ tính được (chỉ
số), nên tốc độ nhanh và đồng đều đối với mọi phần tử.
 Có thể thay đổi số lượng phần tử theo ý muốn của người dùng.
 Có thể bổ sung hoặc xóa một phần tử bất kỳ trong mảng.
 Tất cả các ý trên đều đúng.

Câu 14: Danh sách tuyến tính dạng ngăn xếp là:

 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại
bỏ một phần tử khỏi ngăn xếp luôn luôn thực hiện ở một đầu gọi là đỉnh .
 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp được thực
hiện ở một đầu , và phép loại bỏ được thực hiện ở đầu kia.
 Là một danh sách tuyến tính trong đó phép bổ sung sung một phần tử vào ngăn xếp được
thực hiện ở một đầu, Và phép loại bỏ không thực hiện được.
 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại
bỏ một phần tử khỏi ngăn xếp luôn luôn thực hiện ở tại một vị trí bất kì trong danh sách.

Câu 15: Danh sách tuyến tính dạng ngăn xếp làm việc theo nguyên tắc:

 LIFO(last in first out)


 FIFO( first in first out)
 LILO(last in last out)
 FOLO( fisrt out last out)

Câu 16: 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)


 Mảng (array)
 Hàng đợi(Queue)
 Bản gCâu Record)

Câu 17: S là ngăn xếp , Phép toán thêm phần tử vào ngăn xếp Là Push, phép lấy ra một phần tử từ
ngăn xếp là POP, thủ tục sau làm nhiệm vụ gì?
Procedure Chuyen_doi(N);
While N <> 0 do
R := N mod 2; {tính số dư trong phép chia N cho 2}
call PUSH(S, R);
N := N div 2; {thay N bằng thương của phép chia N cho 2}
end;
While not Empty(S) do
begin
call POP(S, R);
write(R);
end
end.

 ứng dụng ngăn xếp để đổi số N từ cơ số 10 sang cơ số 2


 ứng dụng ngăn xếp để tính số dư trong phép chia N cho 2
 ứng dụng ngăn xếp để thay N bằng thương của phép chia N cho 2
 ứng dụng ngăn xếp để Đưa giá trị N vào ngăn xếp và lấy ra giá trị N

Câu 18: định nghĩa danh sách tuyến tính Hàng đợi (Queue)

 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung phần tử ở một đầu, gọi là lối
sau (rear) và phép loại bỏ phần tử được thực hiện ở đầu kia, gọi là lối trước (front).
 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử hay loại bỏ được
thực hiện ở một đầu danh sách gọi là đỉnh (Top)
 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử được thực hiện ở
một đầu, gọi là lối sau (rear) hay lối trước (front). Phép loại bỏ không thực hiện được.
 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử và phép loại bỏ một phần tử
được thực hiện ở tại một vị trí bất kì trong danh sách.
Câu 19: Hàng đợi còn được gọi là danh sách kiểu:

 FIFO
 LIFO
 FILO
 LOLO

Câu 20: Để thêm một đối tượng x bất kỳ vào Stack, thao tác thường dùng là:

 PUSH(x).
 POP(x).
 TOP(x).
 EMPTY(x).

Câu 21: Để lấy loại bỏ một đối tượng ra khỏi Stack, thao tác thường dùng là: “

 POP(x)
 PUSH(x)
 EMPTY(x)
 FULL(x)

Câu 22: Để biểu diễn Stack, ta thường sử dụng kiểu dữ liệu nào sau đây?

 Danh sách móc nối và mảng dữ liệu


 Mảng dữ liệu
 Danh sách móc nối
 Kiểu bản ghi

Câu 23: Thao tác POP(x) dùng trong Stack là để:

 Lấy một phần tử cuối cùng ra khỏi đỉnh Stack


 Lấy phần tử đầu tiên ra khỏi Stack
 Xóa bỏ một dãy các phần tử ra khỏi Stack
 Xóa bỏ một phần tử bất kì khỏi Stack

Câu 24: Thao tác Push(x) dùng trong Stack là để:

 Bổ sung một phần tử vào đỉnh Stack


 Bổ sung một phần tử vào đầu Stack
 Bổ sung một phần tử bất kì vào Stack
 Bổ sung một dãy các phần tử vào đỉnh Stack.

Câu 25: 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ứ 4 trong Stack ta phải làm thế nào?

 POP(25),POP(23), PUSH(25)
 POP(25),POP(23)
 POP(25),PUSH(23)
 POP(23),PUSH(25).

Câu 26: 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?
 POP(25)
 POP(25),POP(23), PUSH(23)
 POP(25),PUSH(23)
 POP(23),PUSH(25)

Câu 27: 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ứ 3 trong Stack ta phải làm thế nào?

 POP(25), POP(23), POP(20), PUSH(23), PUSH(25)


 POP(25), POP(23), POP(20), PUSH(25), PUSH(23)
 POP(25), POP(23), POP(20)
 POP(25), POP(23), PUSH(20), PUSH(25), PUSH(23)

Câu 28: Trong lưu trữ dữ liệu kiểu Stack, giải thuật sau thực hiện công việc gì?
Procedure F(X)
Begin
T:=T+1;
S[T]:=X;
End;

 Bổ sung một phần tử vào Stack


 Loại bỏ một phân tử ra khỏi Stack
 Kiểm tra Stack có tràn không
 Kiểm tra Stack có cạn không

Câu 29: Trong lưu trữ dữ liệu kiểu Stack, giải thuật F chính là:
Procedure F(X)
Begin
T:=T+1;
S[T]:=X;
End;

 PUSH
 POP
 TOP
 FULL

Câu 30: Trong lưu trữ dữ liệu kiểu Stack, giải thuật sau thực hiện công việc gì?
Function P
Begin
T:=T-1;
P:=S[t+1];
End;

 Loại bỏ một phần tử vào Stack


 Bổ sung một phần tử ra khỏi Stack
 Kiểm tra Stack có tràn không
 Kiểm tra Stack có cạn không

Câu 31: Trong lưu trữ dữ liệu kiểu Stack, giải thuật P chính là:
Function P
Begin
T:=T-1;
P:=S[t+1];
End;

 POP
 PUSH
 TOP
 NULL

Câu 32: Với đoạn mã sau, nếu n=13, trong Stack sẽ là:
While n<>0 do
begin
R:=n mod 2;
Push(R);
n:=n div 2;
end;

 1101
 1011
 13
 6

Câu 33: Với đoạn mã sau, nếu n=13, trong các phần tử được bổ sung vào Stack theo thứ tự:
While n<>0 do
begin
R:=n mod 2;
Push(R);
n:=n div 2;
end;

 1,1,0,1
 1,0,1,1
 6,3,1
 1,3,6

Câu 34: Với đoạn mã sau, nếu các phần tử được đư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?
While T>0 do
begin
R:=POP(S[T]);
write(R);
end;

 1, 0 , 1 , 1
 1, 1 , 0 , 1
 1011
 1101

Câu 35: Trong lưu trữ dữ liệu kiểu Queue (Q) dưới dạng mảng nối vòng, giả sử F là con trỏ trỏ tới
lối trước của Q, R là con trỏ trỏ tới lối sau của Q. Điều kiện F=R=0 nghĩa là:

 Queue rỗng
 Queue tràn
 Đặt phần tử đầu và phần tử cuối của Queue bằng 0
 Kiểm tra chỉ số trước và chỉ số sau của Queue có bằng nhau không.

Câu 36: Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ trỏ tới lối trước của Q, R là con
trỏ trỏ tới lối sau của Q. Khi thêm một phần tử vào Queue, thì R và F thay đổi thế nào?

 F không thay đổi, R=R+1


 F không thay đổi, R=R-1
 F=F+1, R không thay đổi
 F=F-1, R không thay đổi

Câu 37: Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ trỏ tới lối trước của Q, R là con
trỏ trỏ tới lối sau 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


 F không thay đổi, R=R+1
 F không thay đổi, R=R-1
 F=F-1, R không thay đổi

Câu 38: Giải thuật sau thực hiện việc gì?


Procedure Q(x)
Begin
if R=n then R:=1 else R:=R+1;
if F=R then begin write(‘full’)
return
end ;
Q[R]:=X;
if F=0 then F:=1;
End;

 Bổ sung một phần tử vào Queue


 Loại bỏ một phần tử vào Queue
 Kiểm tra Queue có tràn không
 Kiểm tra Queue có rỗng không

Câu 39: Giải thuật sau thực hiện việc gì?


Function Q:kiểu dữ liệu;
Begin
if F=0 then begin write(‘NULL’)
return
end;
Y:=Q[F];
if F=R then begin
F:=R:=0;
return
end;
if F=n then F:=1
else F:=F+1;
Q:=Y;
End;
 Loại bỏ một phần tử vào Queue
 Bổ sung một phần tử vào Queue
 Kiểm tra Queue có tràn không
 Kiểm tra Queue có rỗng không

Câu 40: Giải thuật sau thực hiện việc gì?


Function P(l:ds): boolean;
Begin
P:= (l.last =0);
End;

 Kiểm tra danh sách có rỗng không


 Làm rỗng danh sách
 Cho phần tử cuối cùng trong danh sách bằng 0
 Không có đáp án nào đúng.

Câu 41: Giải thuật sau thực hiện việc gì?


Procedure P( l:ds);
Begin
l.last := 0;
End;

 Làm rỗng danh sách”


 Kiểm tra danh sách có rỗng không
 Cho phần tử cuối cùng trong danh sách bằng 0
 Không có đáp án nào đúng.

Câu 42: Giải thuật sau thực hiện việc gì?


Procedure F(x,P: integer);
Begin
for i:= (l.last+1) downto (P+1) do
l.s[i]:=l.s[i-1];
l.s[P]:=x;
l.last:=l.last + 1;
End;

 Chèn phần tử x vào vị trí P trong danh sách


 Bổ sung phần tử x vào đầu danh sách
 Bổ sung phần tử x vào cuối danh sách
 Không đáp án nào đúng

Câu 43: Giải thuật sau thực hiện việc gì?


Procedure F(P: integer);
Begin
for i:= P to (l.last-1) do
l.s[i]:=l.s[i+1];
l.last:=l.last -1;
End;

 Xoá một phần tử tại vị trí P trong danh sách


 Xoá phần tử đầu tiên trong danh sách
 Xoá phần tử cuối cùng trong danh sách
 Không đáp án nào đúng

Câu 44: Trong biểu diễn dữ liệu dưới dạng cây, cấp của cây chính

 Cấp cao nhất của một nút trên cây


 Cấp cao nhất của nút lá
 Cấp cao nhất của nút gốc
 Tổng số nút trên cây

Câu 45: Trong biểu diễn dữ liệu dưới dạng cây, nút có cấp bằng 0 gọi là:

 Lá
 Gốc
 Phần tử cuối cùng trong cây
 Không có đáp án nào đúng

Câu 46: Mỗi nút trong cây có tối đa:

 Nhiều nút con


 2 nút con
 3 nút con
 1 nút con

Câu 48: Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là i thì vị trí
của nút con trái là:

 2*i
 2*i + 1
 i+1
 i-1

Câu 49: Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là i thì vị tí của
nút con phải là:

 2*i + 1
 2*i
 i+1
 i-1

Câu 50: Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí
tương ứng của nút con sẽ là:

 6 và 7
 6
 4
 7

Câu 51: Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí
tương ứng của nút con trái sẽ là:

 6
 7
 4
 2

Câu 52: Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí
tương ứng của nút con phải sẽ là:

 7
 6
 4
 2

Câu 53: Duyệt cây nhị phân theo thứ tự trước được thực hiện theo thứ tự:

 Thăm gốc, duyệt cây con trái theo thứ tự trước, duyệt cây con phải theo thứ tự trước.
 Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
 Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
 Duyệt cây con trái theo thứ tự sau, thăm gốc trước, duyệt cây con phải theo thứ tự sau.

Câu 54: Duyệt cây nhị phân theo thứ tự giữa được thực hiện theo thứ tự:

 Duyệt cây con trái theo thứ tự giữa, thăm gốc, duyệt cây con phải theo thứ tự giữa.
 Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
 Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
 Thăm gốc, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự giữa.

Câu 55: Duyệt cây nhị phân theo thứ tự sau được thực hiện theo thứ tự:

 Duyệt cây con trái theo thứ tự sau, duyệt cây con phải theo thứ tự sau, thăm gốc.
 Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
 Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
 Thăm gốc, duyệt cây con trái theo thứ tự sau, duyệt cây con phải theo thứ tự sau.

Câu 1: ý tưởng phương pháp sắp xếp chọn tăng dần (select sort)

 Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chổ phần tử bé nhất với phần tử
thứ nhất; Tương tự đối với phần tử nhỏ thứ hai,ba...
 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ắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào bé hơn được cho lên vị trí trê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.

Câu 2: ý tưởng phương pháp sắp xếp nổi bọt (bubble sort) là:

 Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào nhỏ hơn được đứng vị trí trê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 đẩy các
phần tử lớn hơn xuống.
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chổ phần tử bé nhất với phần tử
thứ nhấ; Tương tự đối với phần tử nhỏ thứ hai,ba...
 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.
Câu 3: ý tưởng phương pháp sắp xếp chèn (insertion sort) là:

 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 đẩy các
phần tử lớn hơn xuống.
 Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào nhỏ hơn được đứng vị trí trên.
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chổ phần tử bé nhất với phần tử
thứ nhấ; Tương tự đối với phần tử nhỏ thứ hai,ba...
 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.

Câu 4: ý 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á).
 Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào nhỏ hơn được đứng vị trí trên.
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chổ phần tử bé nhất với phần tử
thứ nhấ; Tương tự đối với phần tử nhỏ thứ hai,ba...
 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.

Câu 5: Phương pháp sắp xếp nhanh (Quick sort) chính là phương pháp:

 Phân đoạn
 Trộn
 Chèn
 Vun đống

Câu 6: ý tưởng phương pháp sắp xếp Trộn (Merge sort) là:

 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.
 Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào nhỏ hơn được đứng vị trí trên.
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chổ phần tử bé nhất với phần tử
thứ nhất; Tương tự đối với phần tử nhỏ thứ hai,ba...
 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á).

Câu 7: ý tưởng phương pháp sắp xếp vun đống (Heap sort) là:

 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.
 Tạo đống cho cây nhị phân (cây nhị phân đã được sắp xếp giảm dần).
 Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kế tiếp nhau, nếu phần tử
nào nhỏ hơn được đứng vị trí trên.
 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á).

Câu 8: Cơ chế heap trong sắp xếp vun đống là:


 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.
 Cây nhị phân hoàn chỉnh 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.
 Cây nhị phân hoàn chỉnh với tính chất giá trị của nút cha lớn luôn lớn hơn giá trị các nút
trong cây con trái và nhỏ hơn giá trị các nút trong cây con phải.
 Cây nhị phân đầy đủ với tính chất giá trị của nút cha lớn luôn lớn hơn giá trị các nút trong
cây con trái và nhỏ hơn giá trị các nút trong cây con phải.

Câu 9: 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?

 Insert – Upheap – Remove – Downheap


 Insert – Upheap – Downheap – Remove
 Remove – Downheap – Insert – Upheap
 Upheap – Downheap – Remove – Insert

Câu 10: Tư tưởng của giải thuật tìm kiếm nhị phâ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.
 So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có
khoá cần tìm.
 Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm
trên hai đoạn đã chia.
 Tìm kiếm dựa vào cây nhị tìm kiếm.

Câu 11: Tư tưởng của giải thuật tìm kiếm tuần tự

 So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có
khoá cần tìm.
 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.
 Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm
trên hai đoạn đã chia.
 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.

Câu 12: Tư tưởng của giải thuật tìm kiếm trên cây nhị phân tìm kiếm

 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.
 So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có
khoá cần tìm.
 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.
 Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm
trên hai đoạn đã chia.

Câu 13: Cây nhị phân tìm kiếm là:


 Cây nhị phân mà mỗi nút trong cây đều thoả tính chất: giá trị của nút cha nhỏ hơn mọi nút
trên cây con trái và lớn hơn mọi nút trên cây con phảI của nó.
 Cây nhị phân mà mỗi nút trong cây đều thoả tính chất: giá trị của nút cha lớn hơn giá trị của
hai nút con.
 Cây nhị phân thoả tính chất heap
 Là cây nhị phân đầy đủ.

Câu 14: 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


 Quick sort, Heap sort
 Quick sort, Bubble sort
 Qucick sort, Insert sort

Câu 15: Thủ tục sau áp dụng giải thuật sắp xếp nào?
Procedure F
Begin
For i:=1 to (n-1) do
For j:=n downto (i+1) do
if a[j] < a[j-1] then
begin tg:=a[j]; a[j]:=a[j-1]; a[j-1]:=tg; end;
End;

 Bubble sort
 Select sort
 insert sort
 Merge sort

Câu 16: Thủ tục sau áp dụng giải thuật sắp xếp nào?
Procedure F
Begin a[0]:=- ∞;
for i:=2 to n do
begin x:=a[i]; j:=i-1;
while x<="" br="" style="box-sizing: border-box;">begin a*[j+1]:=a*[j]; j:=j-1; end;
a[j+1]:=x;
end;
End;

 Insert sort”
 Select sort
 Bubble sort
 Merge sort

Câu 17: Thủ tục sau áp dụng giải thuật sắp xếp nào?
Procedure F(X,b,m,n,Z)
Begin
i:=k; i:=b; j:=m+1;
while i<=m and j<=n do
if x[i] <=x[j] then
begin z[k]:=x[i]; i:=i+1; end
else begin z[k]:=x[j]; j:=j+1; end;
k:=k+1;
if i>m then (zk,…,zn):= (xj,…,xn)
else (zk,…,zn):= (xi,…,xn)
End;

 Merge sort
 Select sort
 Bubble sort
 Insert sort

Câu 18: Thủ tục sau áp dụng giải thuật sắp xếp nào?
Procedure F(a, t, s);
Begin
B:= true;
if t < s then begin i:=t; j:=s+1; key:=a[t];
while b do begin
i:=i+1; while a[i]<=key do i:=i+1;
j:=j -1; while a[j]>=key do j:=j-1;
if i<="" br="" style="box-sizing: border-box;">begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; end
else b:=false;
end;
tg:=a[t]; a[t]:=a[j]; a[j]:=tg;
call F(a, t,j-1);
cal F(a, j+1,s);
end;
End;

 Quick sort
 Merge sort
 Bubble sort
 Insert sort

Câu 19: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ
hai là:

 {0 1 3 6 5 7 9 2 8 4}
 {0 1 2 6 5 7 9 3 8 4}
 {0 1 2 6 5 7 9 3 4 8}
 {0 1 2 3 4 5 6 7 8 9}

Câu 20: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ
ba là:

 {0 1 2 6 5 7 9 3 8 4}
 {0 1 2 3 6 5 7 9 8 4}
 {0 1 2 6 5 7 9 3 4 8}
 {0 1 2 3 4 5 6 7 8 9}

Câu 21: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ tư
là:
 {0 1 2 3 5 7 9 6 8 4}
 {0 1 2 3 6 5 7 9 8 4}
 {0 1 2 3 5 7 9 4 8 6}
 {0 1 2 3 4 5 6 7 8 9}

Câu 22: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ
năm là:

 {0 1 2 3 4 7 9 6 8 5}
 {0 1 2 3 6 5 7 9 8 4}
 {0 1 2 3 5 7 9 4 8 6}
 {0 1 2 3 4 5 6 7 8 9}

Câu 23: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ
sáu là:

 {0 1 2 3 4 5 9 6 8 7}
 {0 1 2 3 4 7 9 6 8 5}
 {0 1 2 3 4 5 6 9 8 7}
 {0 1 2 3 4 5 6 7 8 9}

Câu 24: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) sau
lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần lặp thứ
bảy là:

 {0 1 2 3 4 5 6 9 8 7}
 {0 1 2 3 4 5 9 6 8 7}
 {0 1 2 3 4 5 6 7 8 9}

Câu 25: Cho dãy số {6 1 3 0 5 7 9 2 8 4}. áp dụng phương pháp sắp xếp lựa chọn (Select sort) tăng
dần, sau lần lặp đầu tiên của giải thuật ta có kết quả: {0 1 3 6 5 7 9 2 8 4}. Dãy số thu được sau lần
lặp thứ tám là:

 {0 1 2 3 4 5 6 7 8 9}
 {0 1 2 3 4 5 9 6 8 7}
 {0 1 2 3 4 5 6 9 8 7}

Câu 26: 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ả:{0 4 7 1 9 2 5 3 6 8}. Dãy số thu được sau lần lặp thứ
hai là:

 {0 1 4 7 2 9 3 5 6 8}
 {0 4 7 1 9 2 5 3 6 8}
 {0 1 2 4 7 3 9 5 6 8}
 {0 1 2 3 4 7 5 9 6 8}

Câu 27: 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ả:{0 4 7 1 9 2 5 3 6 8}. Dãy số thu được sau lần lặp thứ ba
là:
 {0 1 2 4 7 3 9 5 6 8}
 {0 4 7 1 9 2 5 3 6 8}
 {0 1 4 7 2 9 3 5 6 8}
 {0 1 2 3 4 7 5 9 6 8}

Câu 28: 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ả:{0 4 7 1 9 2 5 3 6 8}. Dãy số thu được sau lần lặp thứ
bốn là:

 {0 1 2 3 4 7 5 9 6 8}
 {0 1 2 4 7 3 9 5 6 8}
 {0 1 4 7 2 9 3 5 6 8}
 {0 1 2 3 4 7 9 5 6 8}

Câu 29: 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ả:{0 4 7 1 9 2 5 3 6 8}. Dãy số thu được sau lần lặp thứ
năm là:

 {0 1 2 3 4 5 7 6 9 8}
 {0 1 2 4 7 3 9 5 6 8}
 {0 1 4 7 2 9 3 5 6 8}
 {0 1 2 3 4 7 9 5 6 8}

Câu 30: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ hai là:

 {0 2 4 8 5 9 6 1 3 7}
 {0 4 2 8 5 9 6 1 3 7}
 {0 1 2 8 5 9 6 4 3 7}
 {0 1 4 8 5 9 6 1 3 7}

Câu 31: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ ba là:

 {0 2 4 8 5 9 6 1 3 7}
 {0 1 2 8 5 9 6 4 3 7}
 {0 2 3 8 5 9 6 1 4 7}
 {0 2 4 5 8 9 6 1 3 7}

Câu 32: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ bốn
là:

 {0 2 4 5 8 9 6 1 3 7}
 {0 4 2 8 5 9 6 1 3 7}
 {0 1 2 8 5 9 6 4 3 7}
 {0 1 2 3 5 9 6 4 8 7}

Câu 33: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ năm
là:
 {0 2 4 5 8 9 6 1 3 7}
 {0 1 2 4 5 8 9 6 3 7}
 {0 1 2 8 5 9 6 4 3 7}
 {0 1 2 3 5 9 6 4 8 7}

Câu 34: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ sáu là:

 {0 2 4 5 6 8 9 1 3 7}
 {0 1 2 4 5 8 9 6 3 7}
 {0 2 4 5 8 9 6 1 3 7}
 {0 1 2 3 5 9 6 4 8 7}

Câu 35: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ bảy
là:

 {0 1 2 4 5 6 8 9 3 7}
 {0 1 2 4 5 8 9 6 3 7}
 {0 2 4 5 8 9 6 1 3 7}
 {0 1 2 3 5 9 6 4 8 7}

Câu 36: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ tám
là:

 {0 1 2 3 4 5 6 8 9 7}
 {0 1 2 4 5 6 8 9 3 7}
 {0 1 2 3 4 5 8 9 6 7}
 {0 1 2 3 4 5 6 7 8 9}

Câu 37: Cho dãy số {4 0 2 8 5 9 6 1 3 7}. áp dụng phương pháp sắp xếp chèn (Insert sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả:{0 4 2 8 5 9 6 1 3 7}. Dãy số thu được sau lần lặp thứ chín
là:

 {0 1 2 3 4 5 6 7 8 9}
 {0 1 2 4 5 6 8 9 3 7}
 {0 1 2 3 4 5 8 9 6 7}
 {0 1 2 3 4 5 6 8 9 7}

Câu 38: Cho dãy số {3 1 6 0 5 4 8 2 9 7}. áp dụng phương pháp sắp xếp nhanh (Quick sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả: {(0 1 2) 3 (5 4 8 6 9 7)}. Dãy số thu được sau lần lặp thứ
hai là:

 {0 (1 2) 3 (5 4 8 6 9 7)}
 {(0 1 2) 3 (5 4 8 6 9 7)}
 {(3 1 6 0) 5 (4 8 2 9 7)}
 {(0 1 2 3) 4 (5 6 7 8 9)}

Câu 39: Cho dãy số {3 1 6 0 5 4 8 2 9 7}. áp dụng phương pháp sắp xếp nhanh (Quick sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả: {(0 1 2) 3 (5 4 8 6 9 7)}. Dãy số thu được sau lần lặp thứ ba
là:
 {0 1 (2) 3 (5 4 8 6 9 7)}
 {0 1 (2) 3 (5 4) 8 (6 9 7)}
 {(3) 1 (6 0) 5 (4 8) 2 (9 7)}
 {(0) 1 (2 3) 4 (5 6) 7 (8 9)}

Câu 40: Cho dãy số {3 1 6 0 5 4 8 2 9 7}. áp dụng phương pháp sắp xếp nhanh (Quick sort) sau lần
lặp đầu tiên của giải thuật ta có kết quả: {(0 1 2) 3 (5 4 8 6 9 7)}. Dãy số thu được sau lần lặp thứ
bốn là:

 {0 1 2 3 (5 4 8 6 9 7)}
 {0 1 (2) 3 (5 4) 8 (6 9 7)}
 {(3) 1 (6 0) 5 (4 8) 2 (9 7)}
 {(0) 1 (2 3) 4 (5 6) 7 (8 9)}

Câu 41: Cho dãy số: 12 2 8 5 1 6 4 15 và các bước sắp xếp sau:
Bước 1: 1 2 8 5 12 6 4 15
Bước 2: 1 2 8 5 12 6 4 15
Bước 3: 1 2 4 5 12 6 8 15
Bước 4: 1 2 4 5 12 6 8 15
Bước 5: 1 2 4 5 6 12 8 15
Bước 6: 1 2 4 5 6 8 12 15
Các bước trên dựa theo giải thuật sắp xếp nào?

 Select sort
 Insert sort
 Quick sort
 Bubble sort

Câu 42: Cho dãy số: "4 7 0 9 2 5 3 1 8 6" và các bước sắp xếp sau:
Bước 1: 0 4 7 1 9 2 5 3 6 8”
Bước 2: 0 1 4 7 2 9 3 5 6 8
Bước 3: 0 1 2 4 7 3 9 5 6 8
Bước 4: 0 1 2 3 4 7 5 9 6 8
Bước 5: 0 1 2 3 4 5 7 6 9 8
Bước 6: 0 1 2 3 4 5 6 7 8 9
Các bước trên dựa theo giải thuật sắp xếp nào?

 Bubble sort
 Insert sort
 Quick sort
 Select sort

Câu 43: Cho dãy số: "5 1 4 2 7 3" và các bước sắp xếp sau:
Bước 1: 1 5 4 2 7 3”
Bước 2: 1 4 5 2 7 3
Bước 3: 1 2 4 5 7 3
Bước 4: 1 2 4 5 7 3
Bước 5: 1 2 3 4 5 7
Các bước trên dựa theo giải thuật sắp xếp nào?

 Insert sort
 Quick sort
 Select sort
 Bubble sort

Câu 44: Cho dãy số "3 1 6 0 5 4 8 2 9 7" và các bước sắp xếp sau:
Bước 1: (0 1 2) 3 (5 4 8 6 9 7)
Bước 2: 0 (1 2) 3 (5 4 8 6 9 7)
Bước 3: 0 1 (2) 3 (5 4 8 6 9 7)
Bước 4: 0 1 2 3 (5 4 8 6 9 7)
Bước 5: 0 1 2 3 (4) 5 (8 6 9 7)
Bước 6: 0 1 2 3 4 5 (8 6 9 7)
Bước 7: 0 1 2 3 4 5 (7 6) 8 (9)
Bước 8: 0 1 2 3 4 5 (6) 7 8 (9)
Bước 9: 0 1 2 3 4 5 6 7 8 (9)
Bước 10: 0 1 2 3 4 5 6 7 8 9
Các bước trên dựa theo giải thuật sắp xếp nào?

 Quick sort
 Insert sort
 Select sort
 Merge sort

Câu 45: Cho dãy số : 3 1 6 0 5 4 8 2 9 7 và các bước sắp xếp sau:


Bước 1: 1 3 6 0 5 4 8 2 9 7
Bước 2: 1 3 6 0 5 4 8 2 9 7
Bước 3: 1 3 6 0 5 4 8 2 9 7
Bước 4: 0 1 3 5 6 4 8 2 9 7
Bước 5: 0 1 3 5 6 4 8 2 9 7
Bước 6: 0 1 3 5 6 2 4 8 9 7
Bước 7: 0 1 3 5 6 2 4 8 7 9
Bước 8: 0 1 3 5 6 2 4 7 8 9
Bước 9: 0 1 2 3 4 5 6 7 8 9
Các bước trên dựa theo giải thuật sắp xếp nào?

 Merge sort
 Insert sort
 Select sort
 Quick sort

Câu 46: Cho dãy số : 3 1 6 0 5 4 8 2 9 7 và các bước sắp xếp sau:


Bước 1: 1 3 0 6 4 5 2 8 7 9
Bước 2: 0 1 3 6 2 4 5 8 7 9
Bước 3: 0 1 2 3 4 5 6 8 7 9
Bước 4: 0 1 2 3 4 5 6 7 8 9
Các bước trên dựa theo giải thuật sắp xếp nào?

 Merge sort hai đường trực tiếp


 Merge sort
 Select sort
 Quick sort

Câu 47: Giải thuật sau thực hiện việc gì trong phương pháp sắp xếp vun đống?
Procedure F(v: integer)
Begin
n:=n+1;
a[n]:=v;
upheap(n);
end;

 Bổ sung một phần tử vào cây


 Loại bỏ một phần tử ra khỏi cây
 Vun đống cho cây sau khi bổ sung một phần tử
 Vun đống lại cho cây sau khi loại bỏ một phần tử

Câu 48: Giải thuật sau thực hiện việc gì trong phương pháp sắp xếp vun đống?
Procedure Upheap(k:integer);
Begin
V:=a[k]; a[0]:=maxint;
while a[k div 2] <= v do
begin a[k]:= a[k div 2]; k:=k div 2; end;
a[k]:=v;
End;

 Vun đống cho cây sau khi thêm một phần tử


 Vun đống cho cây sau khi loại bỏ phần tử
 Loại bỏ một phần tử ra khỏi cây
 Bổ sung một phần tử vào cây

Câu 49: Giải thuật sau thực hiện việc gì trong phương pháp sắp xếp vun đống?
Procedure Downheap(k:integer)
Label 0;
Begin
v:=a[k];
While k<= n div 2 do
begin j:=k*2;
if a[j]if v>=a[j] then goto 0;
a[k]:=a[j]; k:=j;
end;
0: a[k]:=v;
End;

 Vun đống lại cho cây sau khi loại bỏ một phần tử
 Vun đống cho cây sau khi bổ sung phần tử
 Loại bỏ một phần tử ra khỏi cây
 Bổ sung một phần tử vào cây

Câu 50: Giải thuật sau thực hiện việc gì trong phương pháp sắp xếp vun đống?
Function P: integer;
Begin
P:=a[1];
a[1]:=a[n];
n: =n-1;
Downheap(1);
End;
 Loại bỏ một phần tử ra khỏi cây
 Vun đống cho cây sau khi bổ sung phần tử
 Vun đống lại cho cây sau khi loại bỏ một phần tử
 Bổ sung một phần tử vào cây

Câu 1: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp lựa chọn, sau
lượt 1 dãy sẽ được sắp xếp lại như thế nào?

 15 25 75 40 65 55 90 30 95 85
 15 25 40 75 30 55 65 90 85 95
 15 40 25 30 75 65 55 85 90 95
 40 25 75 15 30 65 55 90 85 95

Câu 2: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp lựa chọn, sau
lượt 2 dãy sẽ được sắp xếp lại như thế nào?

 15 25 75 40 65 55 90 30 95 85
 15 40 25 75 30 55 65 90 85 95
 15 40 25 30 75 65 55 85 90 95
 15 25 75 30 40 65 55 90 85 95

Câu 3: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp lựa chọn, sau
lượt 3 dãy sẽ được sắp xếp lại như thế nào?

 15 25 30 40 65 55 90 75 95 85
 15 40 25 30 75 55 65 90 85 95
 15 40 25 30 75 65 55 85 90 95
 15 25 75 30 40 65 55 90 85 95

Câu 4: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp lựa chọn, sau
lượt 4 dãy sẽ được sắp xếp lại như thế nào?

 15 25 30 40 65 55 90 75 95 85
 15 40 25 75 30 55 65 90 85 95
 15 40 25 30 75 65 55 85 90 95
 15 25 75 30 40 65 55 90 85 95

Câu 5: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nổi bọt, sau
lượt 1 dãy sẽ được sắp xếp lại như thế nào?

 15 40 25 75 30 65 55 90 85 95
 15 25 40 75 30 55 65 90 85 95
 25 40 15 30 75 65 55 85 90 95
 40 25 75 15 30 65 55 90 85 95

Câu 6: Cho dãy số sau: 40 25 75 15 65 55 9 0 30 95 85. Áp dụng phương pháp sắp xếp nổi bọt, sau
lượt 2 dãy sẽ được sắp xếp lại lại như thế nào?

 15 25 40 30 75 55 65 85 90 95
 15 25 40 75 30 55 65 90 85 95
 25 15 40 30 75 55 65 85 90 95
 40 25 15 75 30 65 55 95 85 90
Câu 7: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nổi bọt, sau
lượt 3 dãy sẽ được sắp xếp lại như thế nào?

 15 25 30 40 55 75 65 85 90 95
 15 25 40 75 30 55 65 90 85 95
 25 40 30 15 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 8: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nổi bọt, sau
lượt 4 dãy sẽ được sắp xếp lại như thế nào?

 15 25 30 40 55 65 75 85 90 95
 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 9: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 1 dãy sẽ được sắp xếp lại như thế nào?

 (15 25 30) 40 (65 55 90 75 95 85)


 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 10: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 2 dãy sẽ được sắp xếp lại như thế nào?

 1 5 (25 30) 40 (65 55 90 75 95 85)


 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 11: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85.Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 3 dãy sẽ được sắp xếp lại như thế nào?

 15 25 (30) 40 (65 55 90 75 95 85)


 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 12: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 4 dãy sẽ được sắp xếp lại như thế nào?

 15 25 30 40 (65 55 90 75 95 85)
 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 13: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 5 dãy sẽ được sắp xếp lại như thế nào?

 1 5 25 30 40 (55) 65 (90 75 95 85)


 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 14: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 6 dãy sẽ được sắp xếp lại như thế nào?

 1 5 25 30 40 55 65 (90 75 95 85)
 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 15: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 7 dãy sẽ được sắp xếp lại như thế nào?

 1 5 25 30 40 55 65 (85 75) 90 (95)


 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 16: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 8 dãy sẽ được sắp xếp lại như thế nào?

 1 5 25 30 40 55 65 (75) 85 90 (95)
 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 17: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp nhanh
(Quick_Sort), sau lượt 9 dãy sẽ được sắp xếp lại như thế nào?

 1 5 25 30 40 55 65 7 5 85 90 (95)
 15 25 40 75 30 55 65 90 85 95
 15 40 30 25 55 65 75 85 90 95
 40 25 55 15 30 65 75 90 85 95

Câu 18: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp hòa nhập
(Merge_Sort) trực tiếp, sau lượt 1 dãy sẽ được sắp xếp lại như thế nào?

 [25 40] [15 75] [55 65] [30 90] [85 95]
 [15 25] [40 75] [30 55] [65 90] [85 95]
 [15 40] [30 25] [55 65] [75 85] [90 95]
 [40 25] [55 15] [30 65] [75 90] [85 95]

Câu 19: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp hòa nhập
(Merge_Sort), sau lượt 2 dãy sẽ được sắp xếp lại như thế nào?

 [15 25 40 75] [30 55 65 90] [85 95]


 [15 25 75 40] [30 65 55 90] [85 95]
 [15 40 30 25] [55 65 75 85] [90 95]
 [40 25 55 15] [30 65 75 90] [85 95]
Câu 20: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp hòa nhập
(Merge_Sort), sau lượt 3 dãy sẽ được sắp xếp lại như thế nào?

 [15 25 30 40 55 65 75 90] [85 95]


 [15 25 75 40] [30 65 55 90 85 95]
 [15 40 30 25 55 65 75 85] [90 95]
 [40 25 55 15] [30 65 75 85 90 95]

Câu 21: Cho dãy số sau: 40 25 75 15 65 55 90 30 95 85. Áp dụng phương pháp sắp xếp hòa nhập
(Merge_Sort), sau lượt 4 dãy sẽ được sắp xếp lại như thế nào?

 [15 25 30 40 55 65 75 85 90 95]
 [15 25 75 40 30 65 55 90 85 95]
 [15 40 30 25 55 65 75 85 90 95]
 [40 25 55 15 30 65 75 85 90 95]

Câu 22: Cho dãy số sau: 14 32 10 43 57 87 55 36 97 11. Áp dụng phương pháp tìm kiếm tuần tự,
sau bao nhiều lần thực hiện phép so sánh ta sẽ tìm thấy số 43?

 4 lần
 3 lần
 5 lần
 2 lần

Câu 23: Cho dãy số sau: 10 11 14 32 36 43 55 57 87 97 . Áp dụng phương pháp tìm kiếm nhị phân,
sau bao nhiêu lần phân đoạn ta sẽ tìm thấy số 43?

 3 lần
 2 lần
 4 lần
 5 lần

Câu 24: Cho dãy số sau: 10 11 14 32 36 43 55 57 87 97. Áp dụng phương pháp tìm kiếm nhị phân,
để tìm kiếm số 10, lần phân đoạn thứ nhất của dãy sẽ là:

 [10 11 14 32 36]
 [14 32 10 43 57]
 [87 55 36 97 11]
 [55 36 97 11]

Câu 25: Cho dãy số sau: 10 11 14 32 36 43 55 57 87 97. Áp dụng phương pháp tìm kiếm nhị phân,
để tìm kiếm số 97, lần phân đoạn thứ hai của dãy sẽ là:

 [87 97]
 [36 97 11]
 [36 97]
 [36 11]

Câu 26: Tính chất nào sau đây là tính chất của cây nhị phân tìm kiếm:

 Mọi khóa thuộc cây con trái nút đó đều nhỏ hơn khóa ứng với nút đó
 Mọi khóa thuộc cây con trái nút đó đều lớn hơn khóa ứng với nút đó
 Mọi khóa thuộc cây con trái nút đó đều lớn hơn khóa cây con phải nút đó
 Đáp án A và C

Câu 27: Tính chất nào sau đây là tính chất của cây nhị phân tìm kiếm?

 Mọi khóa thuộc cây con phải nút đó đều lớn hơn khóa ứng với nút đó
 Mọi khoá thuộc cây con phải nút đó đều nhỏ hơn khoá ứng với nút đó
 Mọi khóa thuộc cây con phải nút đó đều nhỏ hơn khóa cây con trái nút đó
 Đáp án A và C

Câu 28: Giải thuật sau là phương pháp tìm kiếm nào?
Function F(x)
Begin
i:=1; a[n+1]:=x;
while a[i] <> x do i:=i+1;
if i=n+1 then return(0)
else return(i);
End;

 Tìm kiếm tuần tự


 Tìm kiếm nhị phân
 Tìm kiếm trên cây nhị phân tìm kiếm
 Không là phương pháp tìm kiếm nào

Câu 29: Giải thuật sau là phương pháp tìm kiếm nào?
Function Binary_search(l,r,x)
Begin
If l>r then k:=0
Else m:= (l+r) div 2
If x< a[m] then K:=binary_search(l, m, x)
Else If x>a[m] then K:=binary_search(m+1,r,x)
Else k:=m;
Return(m);
End;

 Tìm kiếm nhị phân


 Tìm kiếm tuần tự
 Tìm kiếm trên cây nhị phân tìm kiếm
 Không là phương pháp tìm kiếm nào

Câu 1: Các thuộc tính của một kiểu dữ liệu

 Tất cả các thuộc tính đưa ra


 Tên kiểu dữ liệu
 Miền giá trị
 Kích thước lưu trữ
 Tập các toán tử tác động lên kiểu dữ liệu

Câu 2: Miền giá trị của Kiểu số nguyên là:

 -32768 .. 32767
 -32767 .. 32768
 0..32768
 0..32767

Câu 3: Kích thước lưu trữ kiểu số nguyên là

 2 byte
 4 byte
 1 byte
 6 byte

Câu 4: Tập các toán tử kiểu số nguyên là

 +, -, , /, %, các phép so sánh


 +, -, , /, %, các phép so sánh, div ,mod
 +, -, , /, %
 +, -, , /, % ,true,false

Câu 5: Tên kiểu nguyên là:

 Integer
 Byte
 Real
 Boolean

Câu 6: Khi khai báo


type T = min..max
Trong đó min và max là cận dưới và cận trên của khoảng
T là kiểu gì?

 Kiểu đoạn con


 Kiểu liệt kê
 Kiểu integer
 Không có kiểu này

Kiểu liệt kê

 Kiểu đoạn con


 Kiểu integer
 Không có kiểu này

Câu 8: Đâu là kiểu dữ liệu có cấu trúc

 Tất cả các kiểu đưa ra


 Kiểu array (mảng)
 Kiểu record (bản ghi)
 Kiểu con trỏ

Câu 9: Chọn câu trả lời đúng nhất về thuật toán

 Thuật toán là một dãy hữu hạn các bước, mỗi bước mô tả chính xác các phép toán hoặc hành
động cần thực hiện để giải quyết vấn đề đặt ra
 thuật toán cần có một hoặc nhiều dữ liệu ra (output) ,dữ liệu vào (input).
 Thuật toán là một dãy hữu hạn các bước, tất cả các phép toán có mặt trong các bước của
thuật toán phải đủ đơn giản.
 Thuật toán là nòng cốt của chương trình

Câu 10: .Đặc trưng của thuật toán

 Tất cả ý nêu ra
 Mỗi thuật toán có bộ dữ liệu vào ,ra tương ứng
 Mỗi bước của thuật toán cần phải được mô tả một các chính xác
 Tất cả các phép toán có mặt trong các bước của thuật toán phải đủ đơn giản
 thuật toán phải dừng lại sau một số hữu hạn các bước cần thực hiện

Câu 11: Đặc trưng nào của thuật toán thể hiện: Tất cả các phép toán có mặt trong các bước của
thuật toán phải đủ đơn giản

 Tính khả thi


 Tính xác định
 Tính dừng

Câu 12: Để viết chương trình chỉ để sử dụng một số ít lần và cái giá của thời gian viết chương trình
vượt xa cái giá của chạy chương trình thì ta chọn thuật toán:

 Thuật toán đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình)
 Thuật toán sử dụng tiếp kiện nhất nguồn tài nguyên của máy tính, và đặc biệt, chạy nhanh
nhất có thể được.
 Cả hai tiêu chí nêu ra

Câu 13: Khi viết các chương trình (thủ tục hoặc hàm ) để sử dụng nhiều lần, cho nhiều người sử
dụng ta chọn thuật toán:

 Thuật toán sử dụng tiếp kiện nhất nguồn tài nguyên của máy tính, và đặc biệt, chạy nhanh
nhất có thể được.
 Thuật toán đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình)
 Cả hai tiêu chí nêu ra

Câu 14: 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)
 O(nlog2n),O(n),O(log2n),O(1)
 O(log2n),O(n),O(nlog2n),O(1)
 O(1),O(nlog2n),O(n),O(log2n)

Câu 15: Qui tắc tổng Xác định độ phức tạp tính toán
Giả sử T1(n) và T2(n) là thời gian thực hiện của hai giai đoạn chương trình P1 và P2 mà T1(n:
O(f(n)); T2(n: O(g(n)) thì thời gian thực hiện đoạn P1 rồi P2 tiếp theo sẽ là

 T1(n) + T2(n: O(max(f(n),g(n))).


 T1(n) + T2(n: O((f(n)+g(n))).
 T1(n) + T2(n: O(Min(f(n),g(n))).
 T1(n) + T2(n: O((f(n) or g(n))).
Câu 16: Trong một chương trình có 3 bước thực hiện mà thời gian thực hiện tưng bước lần lượt là
O(n2), O(n3) và O(nlog2n). thời gian thực hiện chương trình sẽ là
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(n^3)
 O(n^2)+ O(n^3) + O(nlog2n)
 O(n^2)
 O(nlog2n)

Câu 17: Xác định độ phức tạp tính toán


Nếu tương ứng với P1 và P2 là T1(n: O(f(n)), T2(n: O(g(n)) thì thời gian thực hiện P1 và P2 lồng
nhau sẽ là

 T1(n)T2(n: O(f(n)g(n))
 T1(n)T2(n: O(f(n)+g(n))
 T1(n)T2(n: O(f(n)and g(n))
 T1(n)T2(n: O(f(n)/g(n))

Câu 18: Thời gian thực hiện các lệnh đơn : gán, đọc, viết là
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(1)
 O(2)
 O(log2(n))
 O(n

Câu 19: thời gian thực hiện lệnh hợp thành(Begin.. end) được xác định bởi
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 quy tắc tổng


 Quy tắc nhân
 O(log2(n)
 Hằng số

Câu 20: Nếu S1 và S2 là các câu lệnh và E là biểu thức logic thì
If E Then S1 Else S2
Giả sử thời gian thực hiện các lệnh S1, S2 là O(f(n)) và O(g(n)) tương ứng. Khi đó thời gian thực
hiện lệnh if là

 O(max (f()n), g(n)))


 O(Min (f()n), g(n)))
 O(or( (f()n), g(n)))
 O(And (f()n), g(n)))

Câu 21: Nếu S là câu lệnh và E là biểu thức logic thì


while E do S
Giả sử thời gian thực hiện lệnh S (thân của while) là O(f(n)) . Giả sử g(n) là số tối đa các lần thực
hiện lệnh while
Khi đó thời gian thực hiện lệnh while

 O(f(n)g(n)).
 O(max (f()n), g(n)))
 O(And (f()n), g(n)))

Câu 22: Tính thời gian thực hiện của Hàm sau
function Euclid (m, n : integer) :integer;
var r : integer ;
begin
r := m mod n; (1)
while r<> 0 do (2)
begin
m := n; (3)
n :=r; (4)
r := m mod n; (5)
end;
Euclid := n; (6)
end;
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(log2n)
 2log2n + 1
 O(1)
 O(n)

Câu 23: Cho Hàm sau:


function Euclid (m, n : integer) :integer;
var r : integer ;
begin
r := m mod n; (1)
while r<> 0 do (2)
begin
m := n; (3)
n :=r; (4)
r := m mod n; (5)
end;
Euclid := n; (6)
end;
lệnh (1) có thời gian thực hiện là

 O(1)
 O(n)
 O(2)
 O(m)

Câu 24: Cho Hàm sau:


function Euclid (m, n : integer) :integer;
var r : integer ;
begin
r := m mod n; (1)
while r<> 0 do (2)
begin
m := n; (3)
n :=r; (4)
r := m mod n; (5)
end;
Euclid := n; (6)
end;
lệnh (6) có thời gian thực hiện là

 O(1)
 O(n)
 O(2)
 O(m)

Câu 25: Cho Hàm sau:


function Euclid (m, n : integer) :integer;
var r : integer ;
begin
r := m mod n; (1)
while r<> 0 do (2)
begin
m := n; (3)
n :=r; (4)
r := m mod n; (5)
end;
Euclid:= n: (6)
end;
ba lệnh (3), (4) và (5). Mỗi lệnh có thời gian thực hiện là
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(1)
 O(n)
 O(m)
 O(n^2)

Câu 26: Cho Hàm sau:


function Euclid (m, n : integer) :integer;
var r : integer ;
begin
r := m mod n; (1)
while r<> 0 do (2)
begin
m := n; (3)
n :=r; (4)
r := m mod n; (5)
end;
Euclid := n; (6)
end;
lệnh (2) có thời gian thực hiện là
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(log2n)
 O(n^2)
 O(n)
 O(log2n + 1)
Câu 27: Giải thuật tính giá trị của ex tính theo công thức gần đúng
function Exp1 (n : integer, x :real) :real;
{Tính từng số hạng sau đó cộng dồn lại}
var s, p :real;
i, j :integer;
begin
s := 1; (1)
for i : =1 to n do (2)
begin
p := 1; (3)
for j :=1 to i do (4)
p := p*x/j; (5)
s := s + p; (6)
end;
exp1 := s; (7)
end;
thời gian thực hiện của giải thuật.
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(n^2)
 O(n)
 O(log2(n)
 O(n!)

Câu 28: Giải thuật tính giá trị của ex tính theo công thức gần đúng
function Exp2 (n : integer, x :real) :real;
var s, p :real;
i :integer;
begin
s := 1; (1)
p := 1; (2)
for i : =1 to n do (3)
begin
p := p*x/i;; (4)
s := s + p; (5)
end;
exp2 := s; (6)
end;
end;
thời gian thực hiện của giải thuật.
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(N)
 O(n^2)
 O(n^3)
 O(1)

Câu 29: Với đoạn chương trình dưới đây hãy xác định độ phức tạp tính toán của giải thuật bằng ký
pháp chữ O lớn trong trường hợp tồi nhất.
sum := 0;
for i := 1 to n do
begin
readln(x);
sum := sum + 1;
end;
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(N)
 O(n^2)
 O(log2(n))
 O(1)

Câu 30: Với đoạn chương trình dưới đây hãy xác định độ phức tạp tính toán của giải thuật bằng ký
pháp chữ O lớn trong trường hợp tồi nhất.
for i := 1 to n do
for j := 1 to n do
begin
C[i,j] := 0;
for k := 1 to n do
C[i,j] := C[i,j] + A[i,k] + B[k,j];
end;
Chú ý: (log2n) = Log cơ số 2 của n; n^2 = n mũ 2

 O(n^3)
 O(n^2)
 O(nlog2(n)
 O(n)

Câu 31: GiảI thuật đệ quy la:

 Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1, có dạng
giống như T, thì lời giải đó được gọi là lời giải đệ quy
 Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 khác T , thì
lời giải đó được gọi là lời giải đệ quy
 Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 mà T1 giảI
được thì lời giải đó được gọi là lời giải đệ quy
 Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 mà T1 có độ
phức tạp khác T , thì lời giải đó được gọi là lời giải đệ quy

Câu 32: Xét bài toán tìm một từ trong quyển từ điển. Có thể nêu giải thuật như sau:
Procedure SEARCH(dict, word);
Begin
if từ điển chỉ còn là một trang then
tìm từ word trong trang này
else begin
mở từ điển vào trang giữa
xác định xem nửa nào của từ điển chứa từ word
if từ word nằm ở nửa trước của từ điển then
call SEARCH(dict 1, word)
else call SEARCH(dict 2, word)
end;
End;
Trường hợp suy biến xảy ra khi nào
 sau nhiều lần tách đôi từ điển chỉ còn một trang
 sau một vàI lần tách đôI từ điển
 Khi xác định từ cần tìm nằm ở nửa trước của từ đIển
 Khi xác định từ cần tìm nằm ở nửa sau của từ đIún

Câu 33: Một giảI thuật đệ quy xảy ra trường hợp suy biến khi nào

 Sau một số lần có lời gọi đệ quy bài toán còn lại sẽ được giải quyết theo một cách khác
 Sau một số lần có lời gọi đệ quy.
 Khi kết quả của giảI thuật bằng giá trị 0
 Khi không thể giảI quyết được giảI thuật.

Câu 34: .Đặc đIúm nào của giảI thuật viết bằng đệ quy là sai trong các đặc đIúm sau

 sau một số lần gọi đệ quy bàI toán có giá trị bằng 0
 Trong thủ tục đệ quy có lời gọi đến chính thủ tục đó
 Sau mỗi lần có lời gọi đệ quy thì kích thước của bài toán được thu nhỏ hơn trước.
 Tất cả đều sai

Câu 35: Có Hàm đệ qui sau:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Sau mỗi lần gọi đệ quy thì giá trị của n là

 Giảm đI 1
 Tăng lên 1
 N=0
 N=1

Câu 36: Có Hàm đệ qui sau:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Trường hợp suy biến xảy ra khi nào

 Factorial(0) = 1
 Factorial(n-1)
 Factorial(n: 0
 Factorial(n-1) =1

Câu 37: Có Hàm đệ qui sau:


Function Factorial(n)
Begin
if n=0 then Factorial:=1
else Factorial := n*Factorial(n-1);
End;
Kết quả bằng bao nhiêu khi n=3
 6
 2
 9
 8

Câu 38: Dãy số Fibonacci bắt nguồn từ bài toán cổ về việc sinh sản của các cặp thỏ. Bài toán được
đặt ra như sau:
Các con thỏ không bao giờ chết.
Hai tháng sau khi ra đời một cặp thỏ mới sẽ sinh ra một cặp thỏ con.
Khi đã sinh con rồi thì cứ mỗi tháng tiếp theo chúng lại sinh được một cặp con mới.
Giả sử bắt đầu từ một cặp thỏ mới ra đời thì đến tháng thứ 5 sẽ có bao nhiêu cặp?

 5 cặp
 10 cặp
 9 cặp
 12 cặp

Câu 39: Cho giảI thuật đệ quy sau


Function F(n)
Begin
if n<=2 then F:=1
else F := F(n-2) + F(n-1);
End;
Trường hợp suy biến xảy ra khi nào

 F(1) = 1
 F(2) = 1
 F(1) = 1 và F(2) = 1
 F(1) = 0 và F(2) = 1

Câu 40: Cho giảI thuật đệ quy sau


Function F(n:integer):integer;
Begin
if n<=2 then F:=1
else F := F(n-2) + F(n-1);
End;
Khi n=4 kết quả của bàI toán trên là

 3
 8
 10
 11

Câu 41: Đặc đIúm của giảI thuật đệ quy

 Tất cả đều đúng


 Trong thủ tục đệ quy có lời gọi đến chính thủ tục đó
 Sau mỗi lần có lời gọi đệ quy thì kích thước của bài toán được thu nhỏ hơn trước.
 Có một trường hợp đặc biệt, trường hợp suy biến Khi trường hợp này xảy ra thì bài toán còn
lại sẽ được giải quyết theo một cách khác
Câu 42: giải thuật đệ quy của bài toán "Tháp Hà Nôị" như sau:
Procedure Chuyen(n, A, B, C)
Begin
if n=1 then chuyển đĩa từ A sang C
else begin
call Chuyen(n-1, a, C, B);
call Chuyen(1, A, B, C);
call Chuyen(n-1, B, A, C) ;
end;
End;
Khi n=3 có bao nhiêu bước chuyển

 15 bước
 14 bước
 8 bước
 16 bứơc

Câu 43: giải thuật đệ quy của bài toán "Tháp Hà Nôị" như sau:
Procedure Chuyen(n, A, B, C)
Begin
if n=1 then chuyển đĩa từ A sang C
else begin
call Chuyen(n-1, a, C, B);
call Chuyen(1, A, B, C);
call Chuyen(n-1, B, A, C) ;
end;
End;
Trường hợp suy biến xảy ra khi nào

 N=1
 N=2
 N=0
 N=3

Câu 44: Một giá trị kiểu char chiếm bao nhiêu bộ nhớ

 1byte
 2byte
 3byte
 4byte

Câu 45: Danh sách tuyến tính là:

 danh sách mà quan hệ lân cận giữa các phần tử được hiển thị ra thì được là danh sách tuyến
tính.
 danh sách tuyến tính là một danh sách rỗng
 danh sách tuyến tính là một danh sách có dạng (a1, a2, ..., an)

Câu 46: ưu đIểm của việc càI đặt danh sách bằng mảng

 việc truy nhập vào phần tử của mảng được thực hiện trực tiếp dựa vào địa chỉ tính được(chỉ
số), nên tốc độ nhanh và đồng đều đối với mọi phần tử.
 Tất cả đều đúng
 Khi khai báo một mảng ta phải xác định số lượng phần tử của mảng,nên khống chế số luợng
của đối tuợng mà danh sách lưu trữ.

Câu 47: Danh sách tuyến tính dạng ngăn xếp là:

 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại
bỏ một phần tử khỏi ngăn xếp luôn luôn thực hiện ở một đầu gọi là đỉnh .
 Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp được thực
hiện ở một đầu , và phép loại bỏ được thực hiện ở đầu kia.
 Là một danh sách tuyến tính trong đó phép bổ sung sung một phần tử vào ngăn xếp được
thực hiện ở một đầu, Và phép loại bỏ không thực hiện được

Câu 48: Danh sách tuyến tính dạng ngăn xếp làm việc theo nguyên tắc

 FILO(first in last out)


 FIFO( first in first out)
 LILO(last in last out)
 FOLO( fisrt out last out)

Câu 49: khai báo cấu trúc dữ liệu gì?


Const max = N ;
Type A = Record
E : Array[1..max] Of Item ;
top : 0..max ;
End ;
Var S :A ;

 Khai báo ngăn xếp


 Khai báo hàng đợi
 Khai báo mảng
 Khai báo con trỏ bản ghi

Câu 50: Giả sử danh sách được biểu diễn là một ngăn xếp, có độ dài tối đa là một số N nào đó, các
phần tử của ngăn xếp có kiểu dữ liệu là ItemA
Dòng nào sai trong khai báo sau
Const max = N ;
Type
A = Record
E : Array[1..max] Of integer;
top : 0..integer ;
End ;

 Dòng 4, dòng 5
 Dòng 1
 Dòng 6
 Dòng 5

Câu 51: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Thủ tục sau làm nhiệm vụ gì
procedure Initialize (var S : Stack);
begin
S.top := 0;
end;

 Khởi tạo stack rỗng


 Khởi tạo stack có giá trị bằng 0
 Kiểm tra stack có phần tử bằng 0 hay không?
 Thêm phần tử vào danh sách

Câu 52: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Thủ tục sau làm nhiệm vụ gì
function R ( S : Stack) : Boolean;
begin
R := (S.top = 0);
end;

 Kiểm tra ngăn xếp rỗng.


 Kiểm tra ngăn xếp đầy.
 Khởi tạo stack có giá trị bằng 0
 Khởi tạo stack rỗng

Câu 53: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Thủ tục sau làm nhiệm vụ gì
function F ( S : Stack) : Boolean;
begin
F := (S.top = max);
end;

 Kiểm tra ngăn xếp đầy.


 Kiểm tra ngăn xếp rỗng.
 Kiểm tra ngăn xếp có giá trị nào lớn nhất
 Tìm phần tử lớn nhất của ngăn xếp

Câu 54: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
có hàm kiểm tra như sau
function F ( S : Stack) : Boolean;
begin
F := (S.top = max);
end;
Hàm F bằng giá trị nào khi stach đầy

 True
 False
 0
 1

Câu 55: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Có hàm kiểm tra như sau
function R ( S : Stack) : Boolean;
begin
R := (S.top = 0);
End;
Hàm R bằng giá trị nào khi stach rỗng

 True
 False
 0
 1

Câu 56: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Thủ tục sau làm nhiệm vụ gì
procedure B ( var S : Stack, X : Item);
begin
with S do
if Full(S) then writeln(' Stack is full now')
else begin
top := top + 1;
E[top] := X;
end;
end;

 Thêm một phần tử mới vào đỉnh ngăn xếp


 Loại bỏ phần tử ở đỉnh của ngăn xếp
 Xử lý với nhiều ngăn xếp.
 Kiểm tra ngăn xếp có đầy không

Câu 57: Giả sử S là ngăn xếp các phần tử của nó có kiểu Item và X là một phần tử có cùng kiểu với
các phần tử của ngăn xếp
Thủ tục sau làm nhiệm vụ gì
procedure POP (var S : Stack; var X : Item);
begin
with S do
if Empty(S) then write ('Stack is empty now')
else begin
X := E[top];
top := top - 1;
end;
end;

 Loại bỏ phần tử ở đỉnh của ngăn xếp


 Thêm một phần tử mới vào đỉnh ngăn xếp
 Xử lý với nhiều ngăn xếp.
 Kiểm tra ngăn xếp có rỗng không

Câu 58: 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)


 Mảng (array)
 Hàng đợi(Queue)
 Bản gCâu Record)

Câu 59: S là ngăn xếp , Phép toán thêm phần tử vào ngăn xếp Là Push, phép lấy ra một phần tử từ
ngăn xếp Là POP
Thủ tục sau làm nhiệm vụ gì
Procedure Chuyen_doi(N);
While N <> 0 do
R := N mod 2; {tính số dư trong phép chia N cho 2}
call PUSH(S, R);
N := N div 2; {thay N bằng thương của phép chia N cho 2}
end
While not Empty(S) do
begin
call POP(S, R);
write(R);
end
end.

 ứng dụng ngăn xếp để đổi số N từ cơ số 10 sang cơ số 2


 ứng dụng ngăn xếp để tính số dư trong phép chia N cho 2
 ứng dụng ngăn xếp để thay N bằng thương của phép chia N cho 2
 ứng dụng ngăn xếp để Đưa giá trị N vào ngăn xếp và lấy ra giá trị N

Câu 60: ứng dụng ngăn xếp để đổi số N từ cơ số 10 sang cơ số 2.Dòng nào sai khi khai báo cấu trúc
dữ liệu cho bài toán như sau
(1)Const
(2) max = 16; {thực hiện đổi số nguyên có kích thước 2 byte}
(3) Type
(4) Item = 0..2; {Item là chữ số nhị phân}
(5) Stack = Record
(6) E : Array[1..max] Of Item;
(7) top : 0..max;
(8)End;

 dòng 4
 dòng 1
 dòng 2
 dòng 3

Câu 61: Nhà logic học Balan Lukasiewicz đã đưa ra dạng biểu thức số học theo ký pháp hậu tố
(postfix notation). Và ứng dụng ngăn xếp để thực hiện phép toán.
Giả sử có biểu thức sau:(1 + 5) ( 8 - (4 - 1))
Chuyển biểu thức này về dạng hậu tố cách nào sau đây là đúng

 15+841--
 1 5 8 4 1+ - -
 15+841--
 1 5 8 4 1- -+

Câu 62: định nghĩa danh sách tuyến tính Hàng đợi (Queue)
 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử vào hàng đợi
được thực hiện ở một đầu, gọi là lối sau (rear) và phép loại bỏ một phần tử được thực hiện ở
đầu kia, gọi là lối trước (front).
 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử vào hàng đợi hay
loại bỏ được thực hiện ở một đầu danh sách gọi là đỉnh (Top)
 Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử vào hàng đợiđược
thực hiện ở một đầu, gọi là lối sau (rear) hay lối trước (front). Phép loại bỏ không thực hiện
được.

Câu 63: hàng đợi còn được gọi là danh sách kiểu

 FIFO
 LIFO
 FILO
 LOLO

Câu 64: Đây là khai báo cấu trúc dữ liệu gì


Const max = N ;
Type A = Record
front, rear : 0..max;
E : Array[1..max] Of Item;
End;
Var Q : A;

 Hàng đợi (queue)


 Ngăn xếp (stack)
 Con trỏ (pointer)
 Mảng (array)

Câu 65: Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item
thủ tục sau làm nhiệm vụ gì
Procedure Initialize(Var Q : Queue);
Begin
With Q Do
begin
front := 1; rear := 0;
end;
End;

 Khởi tạo một hàng đợi rỗng


 Kiểm tra hàng đợi có rỗng hay không
 Thêm một phần tử vào hàng đợi
 Loại bỏ một phần tử ra khỏi hàng đợi

Câu 66: Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item
Hàm sau làm nhiệm vụ gì
Function F(Q : Queue) : Boolean;
Begin
F:= (Q.rear = max);
End;

 Kiểm tra hàng đợi đầy.


 Khởi tạo một hàng đợi rỗng
 Kiểm tra hàng đợi có rỗng hay không
 Thêm một phần tử vào hàng đợi
 Loại bỏ một phần tử ra khỏi hàng đợi

Câu 67: Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item
Hàm sau làm nhiệm vụ gì
Function Empty(Q : Queue) : Boolean;
Begin
Empty := (Q.rear = 0);
End;

 Kiểm tra hàng đợi có rỗng hay không


 Kiểm tra hàng đợi đầy.
 Khởi tạo một hàng đợi rỗng
 Thêm một phần tử vào hàng đợi
 Loại bỏ một phần tử ra khỏi hàng đợi

Câu 68: Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item, X là một phần tử có cùng kiểu với
các phần tử của hàng đợi
Thủ tục sau làm nhiệm vụ gì
Procedure Q1(Var Q : Queue; X : Item);
Begin
If Full(Q) Then
write('Hang day')
Else
With Q Do
begin
rear := rear + 1;
E[rear] := X;
end;
End;

 Thêm một phần tử vào hàng đợi


 Kiểm tra hàng đợi có rỗng hay không
 Kiểm tra hàng đợi đầy.
 Khởi tạo một hàng đợi rỗng

Câu 69: Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item, X là một phần tử có cùng kiểu với
các phần tử của hàng đợi
Thủ tục sau làm nhiệm vụ gì
Procedure DeleteQ(Var Q : Queue; Var X : Item);
Begin
If Empty(Q) Then write('Hang rong')
Else
With Q Do
begin
X := E[front];
if front = rear then
begin
front := 1; rear : = 0; {khởi tạo lại hàng đợi}
end
else front := front + 1;
end;
End;

 Loại bỏ một phần tử ra khỏi hàng đợi


 Thêm một phần tử vào hàng đợi
 Kiểm tra hàng đợi có rỗng hay không
 Kiểm tra hàng đợi đầy.
 Khởi tạo một hàng đợi rỗng

Câu 70: Khi loại bỏ một phần tử ra khỏi hàng đợi Thì:

 Nếu hàng đợi rỗng thì không thể thực hiện việc loại bỏ
 Nếu hàng đợi đầy thì không thể thực hiện việc loại bỏ
 Nếu hàng đợi chỉ có một phần tử thì không thể thực hiện việc loại bỏ
 Cần khởi tạo lại hàng đợi

Câu 71: Khi bổ sung một phần tử mới vào hàng đợi cần kiểm tra

 Hàng đợi có đầy không


 Hàng đợi có rỗng không
 Hàng đợi có bao nhiêu phần tử
 Hàng đợi có bao nhiêu giá trị bằng 0

Câu 72: Cho hàm H(n) (với n là số nguyên không âm)định nghĩa đệ quy như sau:
H(n) =1 nếu n>=10
H(n)=2n+ H(n+2) nếu n<10
Tính H(5)

 43
 42
 40
 41

Câu 73: ý tưởng phương pháp sắp xếp nổi bọt (bubble sort) là:

 so sánh hai phần tử kề nhau nếu chưa đúng thì đổi chỗ
 Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của danh sách đã sắp
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất,tương tự đối với phần tử nhỏ thứ hai,ba...
 Dựa vào tư tưởng "chia để trị

Câu 74: ý tưởng phương pháp sắp xếp chèn(insertion sort)

 Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của danh sách đã sắp
 Chọn phần tử bé nhất xếp vào vị trí thứ nhất,tương tự đối với phần tử nhỏ thứ hai,ba...
 Dựa vào tư tưởng "chia để trị
 so sánh hai phần tử kề nhau nếu chưa đúng thì đổi chỗ

Câu 75: ý tưởng phương pháp sắp xếp chọn (select sort)

 Chọn phần tử bé nhất xếp vào vị trí thứ nhất,tương tự đối với phần tử nhỏ thứ hai,ba...
 Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của danh sách đã sắp
 Dựa vào tư tưởng "chia để trị".
 so sánh hai phần tử kề nhau nếu chưa đúng thì đổi chỗ

Câu 76: cho dãy a = (12,2,8,5,1,6,4,15)


các bước sắp xếp như sau:
Bước 1: 1 2 8 5 12 6 4 15
Bước 2: 1 2 8 5 12 6 4 15
Bước 3: 1 2 4 5 12 6 8 15
Bước 4: 1 2 4 5 12 6 8 15
Bước 5: 1 2 4 5 6 12 8 15
Bước6: 1 2 4 5 6 8 12 15
Bước 7: 1 2 4 5 6 8 12 15
Các bước trêndựa theo phương pháp sắp xếp kiểu gì:

 Sắp xếp chọn(selection sort)


 Sắp xếp chèn(insertion sorr)
 Sắp xếp nổi bọt(bubble sort)
 Sắp xếp nhanh(quick sort)

Câu 77: cho dãy a = (12,2,8,5,)


các bước sắp xếp như sau:
bước 1: 2,12,8,5
bước 2: 2,8,12,5
bước 3:2,8,5,12
bước 4:2,8,5,12
buớc5:2,5,8,12
Các bước sắp xếp trên dựa vào tư tưởng của sắp xếp

 Sắp xếp nổi bọt(bubble sort)


 Sắp xếp chèn(insertion sorr)
 Sắp xếp nhanh(quick sort)
 Sắp xếp chọn(selection sort)

Câu 78: Giả sử có mảng N phần tử nguyên chưa sắp . Thủ tục sau áp dụng tư tưởng sắp xếp kiểu gì?
Procedure sapxep;
Begin
For j:=n downto 2 do
For i:=1 to j-1 do
If a[i]<="" br="" style="box-sizing: border-box;">Begin
Tg:=a[i];
A[i]:=a[i+1];
A[i+1]:=tg;
End;
End;

 Sắp xếp nổi bọt(bubble sort)


 Sắp xếp chèn(insertion sort)
 Sắp xếp nhanh(quick sort)
 Sắp xếp chọn(selection sort)

Câu 79: Tư tưởng của giải thuật tìm kiếm nhị phâ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
quuyế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
 So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có
khoá cần tìm
 Dựa vào Tư tưởng "chia để trị

Câu 80: Tư tưởng của giải thuật tìm kiếm tuần tự

 So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có
khoá cần tìm
 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
quuyế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
 Dựa vào Tư tưởng "chia để trị".

Câu 1: Có khai báo dạng:


Type Tên kiểu = ^ Kiểu dữ liệu;
Var Tên biến : Tên kiểu;
Khai báo trên thuộc cấu trúc dạng

 Con trỏ
 mảng
 bản ghi

Câu 2: Ta xét một khai báo có dạng


Type P = ^T;
P có nghiã là gì:

 là biến kiểu con trỏ.


 là kiểu dữ liệu mà con trỏ trỏ tới.
 Cho kết quả là giá trị kiểu T mà nó đang trỏ tới.
 Chỉ địa chỉ của giá trị mà nó đang trỏ tới.

Câu 3: Ta xét một khai báo có dạng


Type P = ^T;
T có nghĩa là gì?

 là kiểu dữ liệu mà con trỏ trỏ tới.


 là biến kiểu con trỏ.
 Cho kết quả là giá trị kiểu T mà nó đang trỏ tới.
 Chỉ địa chỉ của giá trị mà nó đang trỏ tới

Câu 4: Ta xét một khai báo có dạng


Type P = ^T;
P^ có nghĩa là gì?

 Cho kết quả là giá trị kiểu T mà nó đang trỏ tới.


 là biến kiểu con trỏ.
 là kiểu dữ liệu mà con trỏ trỏ tới.
 Chỉ địa chỉ của giá trị mà nó đang trỏ tới

Câu 5: Đối với biến con trỏ Hàm New(p) có nghĩa là gì


 cấp phát vùng nhớ động do con trỏ p quản lý
 Thu hồi vùng nhớ đã cấp phát
 hủy bỏ vùng nhớ do p trỏ tới (quản lý).
 gán giá trị của địa chỉ của vùng Heap cho một con trỏ p nào đó.

Câu 6: Đối với dữ liệu kiểu con trỏ Thủ tục GetMem (p, k) để làm gì?

 Thủ tục này sẽ cấp phát k bytes vùng nhớ do con trỏ p quản lý.
 Thủ tục này sẽ thu hồi vùng nhớ đã được cấp phát .
 gán giá trị của địa chỉ của vùng Heap cho một con trỏ p nào đó
 cho biết tổng số bytes còn lại trên Heap.

Câu 7: Định nghĩa cấu trúc dữ liệu dạng Danh sách(LIST)

 danh sách là một tập hợp các phần tử có cùng một kiểu mà ta gọi là kiểu phần tử
(ElementType).
 danh sách là Tập hợp các phần tử khác kiểu
 Danh sách là kiểu dữ liệu mảng
 Danh sách là kiểu con trỏ

Câu 8: Trong các cấu trúc dữ liệu sau đâu là dữ liệu trừu tượng

 Tất cả cấu trúc đã nêu


 Cấu trúc dữ liệu dạng StacK
 Cấu trúc dữ liệu kiểu hàng đợi(QUEUE)
 Cấu trúc dữ liệu dạng danh sách(LIST)

Câu 9: Tính chất quan trọng của danh sách:

 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)
 Các phần tử của danh sách không theo thứ tự
 Các phần tử của danh sách có thể truy nhập ngẫu nhiên.
 Tất cả đều sai

Câu 10: Có thể cài đặt danh sách bằng:

 Mảng và con trỏ.


 Mảng
 Con trỏ
 tất cả đều sai

Câu 11: Cài đặt danh sách bằng mảng có nghiã 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.
 Dùng biến con trỏ lưu trữ các phần tử của danh sách.
 Dùng bản ghi có hai thành phần để lưu trữ các phần tử của danh sách
 Tất cả đều đúng.

Câu 12: Có một khai báo sau:


Const Maxlength = ............; {độ dài tối đa của danh sách}
Type
ElementType = ......................; {Kiểu phần tử trong danh sách}
List = Record
Elements : array [1..Maxlength] of ElementType;
Last : integer; {độ dài thật sự của danh sách}
End;
Khai báo trên thuộc dạng nào?

 Đây là khai báo cấu trúc dữ liệu Danh sách bằng mảng
 Đây là khai báo cấu trúc dữ liệu Danh sách bằng con trỏ
 Đây là khai báo cấu trúc dữ liệu Stack bằng mảng
 Đây là khai báo bản ghi.

Câu 13: Thủ tục này làm nhiệm vụ gì(danh sách cài đặt bằng mảng)?
Procedure MlList ( Var L : List);
begin
L.Last : = 0;
End;

 Thủ tục khởi tạo danh sách rỗng


 Thủ tục kiểm tra danh sách rỗng
 Thủ tục chèn thêm một giá trị bằng 0 vào danh sách
 Tất cả đều sai

Câu 14: Danh sách cài đặt bằng mảng


Hàm sau có chức năng gì?
Function EtyList ( L : List ) : Boolean;
begin
EtyList : = ( L.Last = 0 );
End;

 Kiểm tra danh sách rỗng


 Khởi tạo danh sách rỗng
 Kiểm tra danh sách đầy
 Kiểm tra giá trị cuối có bằng không hay không?.

Câu 15: Trong khi sử dụng cấu trúc dữ liệu dạng danh sách
Hàm sau có chức năng gì?
Function FList ( L : List ) : Boolean;
begin
FList : = ( L.Last > = Maxlenght );
End;

 Kiểm tra danh sách đầy


 Kiểm tra danh sách rỗng
 Khởi tạo danh sách có giá trị cuối bằng không.
 tất cả đều sai

Câu 16: Thủ tục sau có chức năng gì?


Procedure ListR (Var L : List);
Var i : position;
begin
For i := 1 to L. Last do
begin
Write (' Nhập phần tử thứ ', i ,' của danh sách : ');
Readln (L.Elements [i]);
End;
End;

 Thủ tục nhập giá trị cho các phần tử của danh sách
 Thủ tục xen một phần tử vào danh sách
 Thủ tục xoá phần tử của danh sách
 Thủ tục khởi tạo danh sách rỗng

Câu 17: Khi chèn một phần tử vào danh sách xảy ra tình trạng:
độ dài của danh sách = độ dài của mảng thì thông báo là:

 Danh sách đầy


 Danh sách rỗng
 Danh sách chưa khai báo
 Danh sách không tồn tại

Câu 18: 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

 Độ dài của danh sách < độ dài của mảng


 Độ dài danh sách > độ dài của mảng
 độ dài của danh sách = độ dài của mảng
 độ dài của danh sách có thể tuỳ ý.

Câu 19: Thủ tục sau làm chức năng gì


Procedure IList (x:ElementType; p:position; Var L:List);
Var i:position;
begin
If (L.Last >= Maxlength) Then
writeln('Mảng đầy')
Else
begin
for i:=L.Last downto p do
L.Elements [i+1]:=L.Elements [i];
L.Last:= L.last + 1;
L.Elements[p]:=x;
End;

 Chèn một giá trị vào danh sách


 Xoá một giá trị của danh sách.
 khởi tạo danh sách rỗng

Câu 20: Cài đặt danh sách bằng con trỏ có nghĩa là:

 Dùng con trỏ để liên kết các phần tử của danh sách theo phương thức ai chỉ đến ai+1. Để
một phần tử có thể chỉ đến một phần tử khác ta xem mỗi ô là một Record gồm có 2 tr-ờng :
Trường Elements để giữ nội dung của phần tử trong danh sách. Trường Next là một con trỏ
giữ địa chỉ của ô kế tiếp.
 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. Khai báo bản ghi gồm 2 trường:Trường Elements để giữ nội dung của phần
tử trong danh sách. Trường Next là một con trỏ giữ địa chỉ của ô kế tiếp.
 Dùng con trỏ quản lí các phần tử của mảng theo phương thức bất kì. Để một phần tử có thể
chỉ đến một phần tử khác ta xem mỗi ô là một Record gồm có 2 trường : Trường Elements
để giữ nội dung của phần tử trong danh sách. Trường Next là một con trỏ giữ địa chỉ của ô
kế tiếp.

Câu 21: Khai báo có dạng sau:


Type ElementType = ... ; {Kiểu phần tử của danh sách}
Position = ^ CellType;
CellType = Record
Elements: ElementType;
Next : Position;
End;
List = Position;
Khai báo trên thuộc dạng gì?

 Khai báo danh sách bằng con trỏ


 Là khai báo danh sách bằng mảng
 Khai báo danh sách bằng bản ghi có hai trường.
 Tất cả đều sai

Câu 22: Danh sách khai báo bằng con trỏ. Thủ tục sau có chức năng gì?"
Procedure MnullList ( Var Header : List);
begin
New (Header);
Header.Next : = Nil;
End;

 Thủ tục khởi tạo danh sách rỗng


 Thủ tục tạo mới danh sách
 Thủ tục đưa con trỏ vào biến Nil

Câu 23: Danh sách khai báo bằng con trỏ. Hàm sau có chức năng gì?
Function EList( Header : List): Boolean;
begin
EList: = (Header.Next = Nil);
End;

 Kiểm tra danh sách rỗng


 Khởi tạo danh sách rỗng
 Tạo mới một danh sách
 Đưa con trỏ về cuối danh sách.

Câu 24: Danh sách khai báo bằng con trỏ. Hình ảnh sau mô tả cho thủ tục gì?

 xen một phần tử x vào danh sách


 xoá một phần tử của danh sách
 Tìm kiếm một phần tử của danh sách.

Câu 25: Danh sách khai báo bằng con trỏ. Hình ảnh sau mô tả cho thủ tục gì?
 xoá một phần tử của danh sách
 xen một phần tử x vào danh sách
 Tìm kiếm một phần tử của danh sách.

Câu 26: Định nghĩa cấu trúc dữ liệu Stack:

 Stack là một danh sách đặc biệt mà phép thêm vào hoặc loại bỏ một phần tử chỉ thực hiện tại
một đầu gọi là đỉnh (Top) của Stack.
 Stack là một danh sách đặc biệt mà phép thêm vào được thực hiện ở một đầu ,Và phép loại
bỏ được thực hiện ở phần kia của stack.
 Stack là danh sách kết nối.
 Stack là cấu trúc dữ liệu được cài đặt bằng con trỏ.

Câu 27: Một tích chất của cấu trúc dữ liệu Stack là:

 FILO ( First In Last Out): vào trước ra sau


 LILO (Lats in Last out): vào sau ra sau
 FiFO(Fist in Fist Out): vào truớc ra trước

Câu 28: Để cài đặt Stack ta có thể dùng phương pháp nào sau đây:

 Bằng con trỏ và bằng mảng


 Bằng con trỏ
 Bằng mảng
 Tất cả đều sai

Câu 29: Với Stack đượccài đặt bằng mảng thủ tục sau để làm gì?
Procedure MNullStack ( Var S : Stack);
begin
S.Top :=Maxlenght + 1;
End;

 Thủ tục khởi tạo Stack rỗng


 Thủ tụcTạo mới một StacK
 Thủ tục cập nhật giá trị vào stack
 Thủ tục chèn một giá trị vào stack.

Câu 30: Stack đượccài đặt bằng mảng , thủ tục sau có chức năng gì?
Procedure Pop ( Var S: Stack);
begin
If Not FullS(S) Then
S.Top:=S.Top+1
Else Writeln('Stack rong');
End;

 Thủ tục xoá một giá trị của stack


 Thủ tục thêm một giá trị vào stack
 Thủ tục tạo mới một stack
 Thủ tục tạo một stack rỗng

Câu 31: Stack đượccài đặt bằng mảng , thủ tục sau có chức năng gì?
Procedure Push (x:ElementsType; Var S:Stack);
begin
If Not FullS(S) Then
begin
S.Top:=S.Top -1;
S.Elements[S.Top]:=x;
End
Else Writeln('Stack day');
End;

 Thủ tục thêm một giá trị vào stack


 Thủ tục xoá một giá trị của stack
 Thủ tục tạo mới một stack
 Thủ tục tạo một stack rỗng

Câu 32: Stack cài đặt bằng mảng như sau:


Type ElementType = ......; { Kiểu phần tử }
PointerType = ^ StackNode;
StackNode = Record
Elements : ElementType;
Next : PointerType;
End;
StackType = PointerType;
Var Stack : StackType; { Chỉ đến phần tử ở đỉnh Stack }
Thủ tục sau có chức năng gì:
Procedure MNullStack ( Var S : StackType);
begin
Stack := Nil; { Stack rỗng }
End;

 Thủ tục khởi tạo Stack rỗng


 Thủ tụcTạo mới một StacK
 Thủ tục cập nhật giá trị vào stack
 Thủ tục chèn một giá trị vào stack.

Câu 33: Định nghĩa cẩu trúc dữ liệu hàng đợi (QUEUE)

 Hàng là một danh sách đặc biệt mà phép thêm vào chỉ thực hiện ở một đầu của danh sách
gọi là cuối hàng (Rear). Phép loại bỏ lại được thực hiện ở một đầu kia của danh sách gọi là
đầu hàng (Front).
 Hàng là một danh sách đặc biệt mà phép thêm vào hay loại bỏ đều thực hiện ở một đầu danh
sách gọI là (Rear) hoặc (Front)
 Hàng là một danh sách đặc biệt mà phép thêm vào hay loại bỏ đều thực hịên cuối hàng
(Rear).
 Hàng là một danh sách đặc biệt mà phép thêm vào thực hiện ở một đầu của danh sách gọi là
cuối hàng (Rear) hoặc đầu hàng (Front). Phép loại bỏ lại được thực hiện ở một đầu kia của
danh sách gọi là đầu hàng (Front) hoặc cuối hàng (Rear).

Câu 34: Tính chất của hàng đợi

 "Vào trước - ra trước" - FIFO : First In First Out.


 Vào trước - ra sau" - FILO : First In last Out.
 Vào sau - ra trước" - LIFO : Last In Fist Out.
Câu 35: Queue được cài đặt bằng mảng, thủ tục sau làm có chức năng gì?
Const Maxlength = .......; { độ dài mảng }
Type ElementType = ......; { Kiểu phần tử }
QUEUE = Record
Elements : array[1..Maxlength] of ElementType;
Front, Rear : integer;
End;
Procedure MNullQueue ( Var Q : Queue);
begin
Q. Front := 0; Q. Rear := 0;
End;

 Thủ tục khởi tạo Queue rỗng


 Hàm kiểm tra Queue rỗng
 Kiểm tra Queue đầy :
 Thủ tục xen một phần tử vào cuối hàng

Câu 36: Hàng đợi(QUEUE) cài đặt bằng mảng. Hàm sau có chức năng gì?"
Const Maxlength = .......; { độ dài mảng }
Type ElementType = ......; { Kiểu phần tử }
QUEUE = Record
Elements : array[1..Maxlength] of ElementType;
Front, Rear : integer;
End;
Function FQ (Q : Stack):Boolean;
begin
FQ := (( Q.rear - Q.Front + 1: Maxlenght);
End;

 Hàm Kiểm tra Queue đầy


 Hàm kiểm tra Queue rỗng
 Hàm kiểm tra một phần tử có trong hàng hay không?

Câu 37: Hàng cài đặt bằng con trỏ"


Hàm sau có chức năng gì?
Function EQ (Q : Queue) : Boolean;
begin
EQ := (Q.Front = Q.Rear);
End;

 Kiểm tra hàng Rỗng


 Kiểm tra Hàng đầy
 Kiểm tra một phần tử có trong hàng.

Câu 38: Hàng cài đặt bằng con trỏ.Hình ảnh sau minh hoạ cho thủ tục nào?

 Thủ tục xen một phần tử vào cuối hàng :


 Thủ tục xóa một phần tử đầu hàng
 Thủ tục khởi tạo Queue rỗng
 Thủ tục tìm kiếm một phần tử trong Hàng

Câu 39: Hàng cài đặt bằng con trỏ.Hình ảnh sau minh hoạ cho thủ tục nào?
 Thủ tục xóa một phần tử đầu hàng
 Thủ tục xen một phần tử vào cuối hàng
 Thủ tục khởi tạo Queue rỗng
 Thủ tục tìm kiếm một phần tử trong Hàng

Câu 40: Đối với biến con trỏ Hàm MaxAvail : Longint : có nghĩa là gì

 Hàm cho biết vùng nhớ lớn nhất còn trống trong Heap.
 Hàm cho biết tổng số bytes còn lại trên Heap.
 Cho biết số bytes được cấp phát / thu hồi bởi biến.
 Hàm cho biết vùng nhớ lớn nhất được cấp phát.

Câu 41: Đối với biến con trỏ Hàm MemAvail : Longint : có nghĩa là gì

 Cho biết số bytes được cấp phát / thu hồi bởi biến.
 Hàm cho biết tổng số bytes còn lại trên Heap.
 Hàm cho biết vùng nhớ lớn nhất còn trống trong Heap.
 Hàm cho biết vùng nhớ lớn nhất được cấp phát.

Câu 42: Đối với biến con trỏ Hàm SizeOf (Biến ) : Longint : có nghĩa là gì

 Hàm cho biết tổng số bytes còn lại trên Heap


 Hàm cho biết vùng nhớ lớn nhất còn trống trong Heap.
 Cho biết số bytes được cấp phát / thu hồi bởi biến.
 Hàm cho biết vùng nhớ lớn nhất được cấp phát

Câu 43: Đối với biến con trỏ hàm Add (x) : Pointer có chức năng gì?

 Cho biết địa chỉ tổng quát của biến x.


 Cho biết địa chỉ segment của biến x
 Cho biết địa chỉ Offset của biến x.
 Cho biết địa chỉ seg : Ofs.

Câu 44: Đối với biến con trỏ hàm Seg (x) : Word có chức năng gì?

 Cho biết địa chỉ segment của biến x


 Cho biết địa chỉ tổng quát của biến x.
 Cho biết địa chỉ Offset của biến x.
 Cho biết địa chỉ seg : Ofs.

Câu 45: Đối với biến con trỏ hàm Ofs (x) : Word có chức năng gì?

 Cho biết địa chỉ Offset của biến x.


 Cho biết địa chỉ tổng quát của biến x.
 Cho biết địa chỉ segment của biến x
 Cho biết địa chỉ seg : Ofs.

Câu 46: Thế nào là sắp xếp trong

 Sắp xếp trong là sự sắp xếp dữ liệu được tổ chức trong bộ nhớ trong cuả máy tính, ở đó ta có
thể sử dụng khả năng truy nhập ngẫu nhiên của bộ nhớ
 Sắp xếp trong là sự sắp xếp được sử dụng khi số lượng đối tượng được sắp xếp lớn. Cụ thể
là ta sẽ sắp xếp dữ liệu được lưu trữ trong các tập tin.
 Sắp xếp trong 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.
 Sắp xếp trong là sắp xếp không phụ thuộc vào độ dài tập tin. Mà chỉ phụ thuộc vào bộ nhớ
trong của máy tính

Câu 47: 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.
 Sắp xếp ngoài là sự sắp xếp dữ liệu được tổ chức trong bộ nhớ trong cuả máy tính, ở đó ta
có thể sử dụng khả năng truy nhập ngẫu nhiên của bộ nhớ
 Sắp xếp ngoài là sự sắp xếp được sử dụng khi số lượng đối tượng được sắp xếp lớn. Cụ thể
là ta sẽ sắp xếp dữ liệu được lưu trữ trong các tập tin.
 Sắp xếp ngoài là sắp xếp không phụ thuộc vào độ dài tập tin. Mà chỉ phụ thuộc vào bộ nhớ
trong của máy tính

Câu 48: Đâu là phương pháp sắp xếp trong ,trong các phương pháp sau

 Tất cả đều sai


 Phương pháp sắp xếp chọn (insertion sort)
 Phương pháp sắp xếp chèn (selection sort)
 Phương pháp nổi bọt(Bubble sort)

Câu 49: Đâu là phương pháp sắp xếp ngoài ,trong các phương pháp sau

 cả 3 phương pháp đều đúng


 Phương pháp sắp xếp chọn (selection sort)
 Phương pháp sắp xếp chèn (insertion sort)
 Phương pháp nổi bọt(Bubble sort)

Câu 50: Bước tổng quát của Phương pháp sắp xếp kiểu lựa chọn (selection sort)

 chọn phần tử có khoá nhỏ nhất trong n-i+1 phần tử từ a[i] đến a[n] và hoán vị nó với a[i].
 xen phần tử a[i+1] vào danh sách đã có thứ tự a[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] là
một danh sách có thứ tự.
 xét các phần tử từ a[n] đến a[i+1].với mỗi phần tử a[j], so sánh khoá của nó với khoá của
phần tử a[j-1] đứng ngay trước nó. Nếu khoá của a[j] nhỏ hơn khoá của a[j-1] thì hoán đổi
a[j] và a[j-1] cho nhau

Câu 51: Bước tổng quát của Phương pháp sắp xếp kiểu chèn (insertion sort)

 xen phần tử a[i+1] vào danh sách đã có thứ tự a[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] là
một danh sách có thứ tự.
 chọn phần tử có khoá nhỏ nhất trong n-i+1 phần tử từ a[i] đến a[n] và hoán vị nó với a[i].
 xét các phần tử từ a[n] đến a[i+1].với mỗi phần tử a[j], so sánh khoá của nó với khoá của
phần tử a[j-1] đứng ngay trước nó. Nếu khoá của a[j] nhỏ hơn khoá của a[j-1] thì hoán đổi
a[j] và a[j-1] cho nhau

Câu 52: Bước tổng quát của Phương pháp sắp xếp kiểu nổi bọt (bubble sort)
 xét các phần tử từ a[n] đến a[i+1].với mỗi phần tử a[j], so sánh khoá của nó với khoá của
phần tử a[j-1] đứng ngay trước nó. Nếu khoá của a[j] nhỏ hơn khoá của a[j-1] thì hoán đổi
a[j] và a[j-1] cho nhau
 chọn phần tử có khoá nhỏ nhất trong n-i+1 phần tử từ a[i] đến a[n] và hoán vị nó với a[i].
 xen phần tử a[i+1] vào danh sách đã có thứ tự a[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] là
một danh sách có thứ tự.

Câu 53: Xét thủ tục sắp xếp sau


procedure BubbleSort;
Var
i,j: integer;
begin
(1) for i := 1 to n-1 do
(2) for j := n downto i+1 do
(3) if a[j].key < a[j-1].key then
(4) Swap(a[j],a[j-1]);
Dòng lệnh (3) thời gian thực hiện là bao nhiêu

 Là hằng
 O(n)
 O(n-1)
 O(n mũ 2)

Câu 54: Xét thủ tục sắp xếp sau


procedure BubbleSort;
Var
i,j: integer;
begin
(1) for i := 1 to n-1 do
(2) for j := n downto i+1 do
(3) if a[j].key < a[j-1].key then
(4) Swap(a[j],a[j-1]);
Dòng lệnh (2) thời gian thực hiện là bao nhiêu

 O(n-i) thời gian


 Là hằng thời gian
 O(n) thời gian
 O(n mũ 2) thời gian

Câu 55: Xét thủ tục sắp xếp sau


procedure BubbleSort;
Var
i,j: integer;
begin
(1) for i := 1 to n-1 do
(2) for j := n downto i+1 do
(3) if a[j].key < a[j-1].key then
(4) Swap(a[j],a[j-1]);
Thời gian để thực hiện thủ tục trên là:

 O(n mũ 2) thời gian


 Là hằng thời gian
 O(n-i) thời gian
 O(n) thời gian

Câu 56: Xét thủ tục sau


procedure InsertionSort;
Var
i,j: integer;
begin
{1} for i := 2 to n do begin
{2} J := i;
{3} while (j>1) and (a[j].key < a[j-1].key) do begin
{4} swap(a[j], a[j-1]);
{5} j := j-1;
end;
end;
end;
Thời gian thực hiện của dòng lệnh {2} là bao nhiêu

 O(1)
 O(n)
 O(n-i)
 O(n^2)

Câu 57: Xét thủ tục sau


procedure InsertionSort;
Var
i,j: integer;
begin
{1} for i := 2 to n do begin
{2} J := i;
{3} while (j>1) and (a[j].key < a[j-1].key) do begin
{4} swap(a[j], a[j-1]);
{5} j := j-1;
end;
end;
end;
Thời gian thực hiện của dòng lệnh {5} là bao nhiêu

 O(1)
 O(n)
 O(n-i)
 O(n mũ 2)

Câu 58: Xét thủ tục sau


procedure InsertionSort;
Var
i,j: integer;
begin
{1} for i := 2 to n do begin
{2} J := i;
{3} while (j>1) and (a[j].key < a[j-1].key) do begin
{4} swap(a[j], a[j-1]);
{5} j := j-1;
end;
end;
end;
Thời gian thực hiện của thủ tục trên là bao nhiêu

 O(n mũ 2)
 O(1)
 O(n)
 O(n-1)

Câu 59: Giả sử cần Sắp xếp mảng gồm 10 mẩu tin có khóa là các số nguyên: 5, 6, 2, 2, 10, 12, 9,
10, 9 và 3 các bước trong bảng sau cho ta biết đang sử dụng phương pháp sắp xếp nào

 Phương pháp sắp xếp lựa chọn


 Phương pháp sắp xếp chèn
 Phương pháp nổi bọt
 một phương pháp khác

Câu 60: Giả sử cần Sắp xếp mảng gồm 10 mẩu tin có khóa là các số nguyên: 5, 6, 2, 2, 10, 12, 9,
10, 9 và 3 các bước trong bảng sau cho ta biết đang sử dụng phương pháp sắp xếp nào

 Phương pháp sắp xếp chèn


 Phương pháp sắp xếp lựa chọn
 Phương pháp nổi bọt
 một phương pháp khác

Câu 61: Giả sử cần Sắp xếp mảng gồm 10 mẩu tin có khóa là các số nguyên: 5, 6, 2, 2, 10, 12, 9,
10, 9 và 3 các bước trong bảng sau cho ta biết đang sử dụng phương pháp sắp xếp nào

 Phương pháp nổi bọt


 Phương pháp sắp xếp lựa chọn
 Phương pháp sắp xếp chèn
 một phương pháp khác

Câu 62: Giải thuật là gì?

 giải thuật là một cách để giải bài toán nào đó, nhưng nó phải áp dụng được cho mọi bài toán
cùng loại.
 giải thuật là một cách để giải bài toán nào đó.Cũng có thể chỉ đúng cho một vài tr-ờng hợp
đặc biệt .
 giải thuật là một cách để giải bài toán nào đó bằng phương pháp lưu đồ
 giải thuật là một cách để giải bài toán nào đó chỉ bằng ngôn ngữ.

Câu 63: Thế nào là ngôn ngữ giả?

 Ngôn ngữ giả là sự kết hợp của ngôn ngữ tự nhiên và các cấu trúc của một ngôn ngữ lập
trình nào đó.
 Ngôn ngữ giả là ngôn ngữ do ngưuoi lập trình định nghĩa.
 Ngôn ngữ giả là ngôn ngữ lập trình pascal, C, hay một ngôn ngữ bậc cao khác.
 Ngôn ngữ giả là cấu trúc của môt chuương trình chỉ viết bằng ngôn ngữ Pascal mà tuỳ thuộc
vào nguười lập trình.
Câu 64: Hãy sắp xếp thứ tự 3 giai đoạn để giải quyết bài toán
(B) Xây dựng mô hình toán thích hợp cho bài toán và tìm một giải thuật giải quyết bài toán trên mô
hình đó.
(C) Giải thuật được trình bày bằng ngôn ngữ giả dựa trên các kiểu dữ liệu trừu tượng.
(A) Chọn một cách cài đặt một kiểu dữ liệu trừu tượng và thay ngôn ngữ giả bằng các mã lệnh của
1 ngôn ngữ lập trình . Kết quả là ta được 1 chương trình hoàn chỉnh có thể giải quyết được vấn đề
đặt ra.

 B,C,A
 A,B,C
 C,A,B
 B,A,C

Câu 65: Bài toán tô màu đồ thị:


Tô màu cho các đỉnh của đồ thị sao cho số màu được dùng là ít nhất và 2 đỉnh kề nhau (có cung
nối) không được tô cùng 1 màu. Với đồ thị sau ta có thể tô tối thiểu bao nhiêu màu:

 2 màu
 1 màu
 3 màu
 4 màu

Câu 66: Thời gian chạy chương trình phụ thuộc vào các yếu tố nào

 Tất cả các yếu tố nêu ra


 Dữ liệu đầu vào.
 Tôc độ của máy được dùng.
 Tính chất của trình biên dich được dùng.
 Độ phức tạp tính toán của giải thuật.

Câu 67: Giả sử chương trình A có thời gian chạy chương trình T1(n)=n^2(n mũ 2)
Giả sử chương trình B có thời gian chay chương trình 4*n+1
với n càng lớn thì chương trình nào tốt hơn

 chương trình B tốt hơn chương trình A


 chương trình A tốt hơn chương trình B
 chương trình A = chương trình B

Câu 68: Nếu T1(n) và T2(n) là thời gian chạy của 2 đoạn chương trình P1 ,P2. Thời gian chạy của
hai chuơng trình P1, P2 nối nhau là:

 T=T1+T2
 T = T1 T2
 T=T1-T2
 T=T1/T2

Câu 69: Nếu T1(n) và T2(n) là thời gian chạy của 2 đoạn chương trình P1 ,P2. Thời gian chạy của
hai chuơng trình P1, P2 lồng nhau là

 T=T1*T2
 T=T1+T2
 T=T1-T2
 T=T1/T2

Câu 70: Thời gian chạy của các lệnh gán ,Read,Write là:

 O(1)
 O(n)
 O(3)
 O(2)

Câu 71: Thời gian chạy của một chuỗi tuần tự áp dụng quy tắc

 Quy tắc Cộng


 Quy tắc Nhân
 Quy tắc Trừ
 Quy tắc Nhân đôi

Câu 72: Xét thủ tục sau


procedure InsertionSort;
Var
i,j: integer;
begin
{1} for i := 2 to n do begin
{2} J := i;
{3} while (j>1) and (a[j].key < a[j-1].key) do begin
{4} swap(a[j], a[j-1]);
{5} j := j-1;
end;
end;
end;
Thời gian thực hiện của lệnh {1} là bao nhiêu

 O(n)
 O(1)
 O(nlogn)
 O(3)

Câu 1: Cho lệnh gán X := F với F = 5X + 7Y , X=6, Y =X + 2. Sau lệnh này X có giá trị:

 86
 72
 53
 71

Câu 2: Cho lệnh gán X := F với F = arctg(x) , x = Pi / 4 . Sau lệnh gán này X có giá trị

 2
 3
 Pi
 1

Câu 3: Cho điều kiện if B then ( y = 7x + 3 ) else ( y = x^2 + 1 ), B là điều kiện x> 7. Khi x=7 thì y
có giá trị là :
 52
 50
 47
 51

Câu 4: Cho lệnh lặp: for i:=1 to 4 do y=3i + 6 . Hãy xác định các kết quả thu được:

 5,8,11,14
 3,6,9,12
 9,12,15,18
 7,10,13,16

Câu 5: Cho lệnh While B do x^2 + 7, trong đó B là x>3. Khi kiểm tra điều kiện B thì thấy x=3. Kết
quả của lệnh này là :

 =16
 =7
 Không thực hiện được phép tính nào cả
 =15

Câu 6: Cho lệnh: For i:=1 to 10


repeat( 7i - 3 ) until ( i = 5)
Sau lệnh này ta được:

 Không được gì cả
 4,11,18,25,32
 4,11,18,25,32,39,46
 4,11,18,25,32,39,46,53,60,67

Câu 4: Để đổi chỗ 2 phần tử a7, a9 ta đưa thêm một tham số X và ta thực hiện dãy lệnh sau đây:

 a7:=a9 ; a9:=a7 ; X:= a7


 X:=a7 ; a9:=X ; a7:=a9
 X:=a7 ; a7:=a9 ; a9=X
 X:=a9 ; a7:=X ; a9:=a7

Câu 5: Trong giải thuật con mã đi tuần, nếu đầu tiên con mã ở ô (2,7) ( số đầu tiên là dòng, số thứ 2
là cột) thì quân mã có thể đi đến các ô:

 (3,7),(4,6),(4,8),(1,5)
 (1,5),(2,7),(4,6),(5,8)
 (1,6),(2,7),(3,8),(4,6)
 (1,5),(3,5),(4,6),(4,8)

Câu 6: Trong giải thuật xếp 8 con hậu, nếu đã có con hậu ở ô (5,3) thì không con hậu nào được nằm
ởô:

 (8,1)
 (2,4)
 (7,5)
 (4,5)
Câu 10: Trong giải thuật xếp 8 con hậu, nếu có con hậu ở ô (4,5) thì không con hậu nào được ở ô:

 (3,7)
 (1,8)
 (2,3)
 (6,4)

Câu 11: Trên 1 bàn cờ, những ô nằm trên cùng một đường chéo từ dưói lên với ô (i,j) có hệ thức :

 (hàng - côt)=i-j
 (hàng + cột)=i+j
 (hàng + cột)=i-j
 (hàng - cột)=i+j

Câu 12: Trên 1 bàn cờ, những ô nằm trên cùng 1 đường chéo từ trên xuống với ô (i,j) có hệ thức

 hàng+cột=i+j
 hàng+cột=i-j
 hàng-cột=i-j
 hàng-cột=i+j

Câu 13: Trong giải thuật xếp 8 con hậu, nếu có con hậu đã ở ô (2,3) thì không con hậu nào được ở ô
:

 (6,4)
 (5,7)
 (7,8)
 (5,2)

Câu 14: Khi dùng giải thuật đệ quy để thực hiện bài toán tháp Hà Nội, nếu tháp có 5 vòng thì ta
phải thực hiện bao nhiêu thao tác:

 64
 15
 31
 70

Câu 15: Trong số các phép toán sau đây, phép toán nào không được dùng đối với mảng:

 Tạo mảng
 Bổ xung một phần tử vào mảng
 Lưu trữ mảng
 Tìm kiếm trên mảng

Câu 16: Cho mảng một chiều A=(a1,a2,…,ax,…,an) và được lưu trữ liên tiếp. Giả thử mỗi phần tử
của mảng chiếm 3 ô và phần tử đầu tiên F(1) có địa chỉ 23 thì phần tử F(4) có địa chỉ:

 52
 15
 41
 70
Câu 17: Cho mảng 2 chiều : A={F( i j)} i là chỉ số hàng, j là chỉ số cột. Mảng A có 8 hàng, 9 cột.
Lưu trữ liên tiếp mảng A ưu tiên hàng. Nếu phần tử F(11) có địa chỉ 50, mỗi phần tử chiếm 3 ô thì
phần tử F(57) có địa chỉ:

 162
 176
 148
 152

Câu 18: Cho mảng 2 chiều A={F( i j)}: i là chỉ số hàng, j là chỉ số cột. Mảng A có 8 hàng, 9 cột.
Lưu trữ liên tiếp mảng A ưu tiên cột nếu phần tử F(11) có địa chỉ 230 , mỗi phần tử chiếm 3 ô thì
phần tử F(37) có địa chỉ:

 382
 420
 380
 378

Câu 19: Cho mảng 2 chiều: A={a (i j ) . Mảng có m hàng, n cột. Công thức tính địa chỉ của phần tử
F(i j) trong việc lưu trữ liên tiếp
L{F(i j)} = L(0) + C [(i - 1)n + (j - 1)]
Dùng trong trường hợp

 Trong mọi trường hợp


 Ưu tiên hàng
 Ưu tiên cột

Câu 20: Cho mảng 2 chiều A={a (i j )}, mảng có m hàng, n cột, và được lưu trữ liên tiếp. Công thức
tính địa chỉ của phần tử a (i j)
L{ F(i j )} = L(0) + C [(j - 1)m + (i - 1)]
Dùng trong trường hợp

 Ưu tiên hàng
 Ưu tiên cột
 Trong mọi trường hợp

Câu 21: Dùng phương pháp lưu trữ liên tiếp để lưu trữ một ma trận ( mảng hai chiều) có nhược
điểm lớn nhất là :

 Khó tìm kiếm


 Cần một lượng ô nhớ lớn
 Lãng phí ô nhớ khi ma trận thưa

Câu 22: .Dùng STACK để lưu trữ số nhị phân có giá trị bằng số thập phân 215 ta có kết quả: ( số
bên trái vào trước số bên phải )

 11101011
 10111101
 11001110
 11110011
Câu 25: Biểu thức hậu tố ký pháp Balan
AB + CDA + -
Với A=1; B=5; C=8; D=4 có giá trị là:

 8
 10
 17
 18

Câu 26: Cho một ma trận thưa, hàng 1 có 2 phần tử F(11) , F(12) . Từ hàng thứ 2 chỉ có 3 phần tử
F(k , k-1) ; F(k, k) ; F(k, k+1) , hàng cuối cùng cũng chỉ có 2 phần tử : F(n, n-1) ; F(n , n)
Hãy lưu trữ liên tiếp ưu tiên hàng của ma trận này thành một mảng một chiều : thí dụ F(11) là b(1) ;
F(12) là b(2) ; F(21) là b(3) …
Tính b(k) nếu phần tử F(i j ) là F(6 , 7)

 b(21)
 b(18)
 b(17)
 b(20)

Câu 27: Cho cây nhị phân T. Phép duyệt thứ tự trước cho kết quả là

 ADBCEFG
 AEDBCFG
 ABDECFG
 AEBDCGF

Câu 28: Cho cây nhị phân T. Phép duyệt thứ tự giữa cho ta kết quả là:

 DBEAFCG
 BEDACFG
 DEBAGFC
 DBEACFG

Câu 29: Cho cây nhị phân T. Phép duyệt thứ tự sau cho ta biết kết quả là:

 DEBFGCA
 EBFCGAD
 DBEFAGC
 DEBGCFA

Câu 30: Cho cây nhị phân T. Phép duyệt cây theo thứ tự trước cho kết quả ABDEHCFIGJ. Nếu
duyệt theo thứ tự giữa ta có kết quả: DBHEAFICGJ. Hãy cho biết các nút của cây con trái:

 BDHE
 FIHE
 DHEG
 DEH

Câu 31: Cho cây nhị phân T, phép duỵêt cây theo thứ tự giữa cho kết quả DBHEAFICGJ . Nếu
duyệt theo thứ tự sau ta có kết quả : DHEBIFJGCA . Hãy cho biết các nút của cây con phải.
 FICGJ
 FBHE
 ICGH
 HEFI

Câu 32: Độ cao của cây là gì?

 Số lượng nút của cây


 Mức lớn nhất của cây
 Cấp lớn nhất của nút
 Số cây con của cây

Câu 33: Cho cây nhị phân T, nút có địa chỉ 7 có 2 con ở địa chỉ nào:

 8 và 9
 14 và 15
 30 và 31
 13 và 14

Câu 34: Cho cây nhị phân T, nút có địa chỉ 19 thì có nút cha ở địa chỉ nào

 17
 8
 9
 18

Câu 35: Cho cây nhị phân T. Số nút tối đa ở mức 7 ( nút gốc có mức 1) là:

 32
 28
 64
 128

Câu 36: Cho cây nhị phân T có chiều cao là 6( nút gốc có mức 1) . Số nút tối đa của cây là:

 90
 31
 125
 63

Câu 37: Nếu lưu trữ kế tiếp một cây nhị phân có chiều cao 8 thì phải dự trù bao nhiêu ô nCâu nút
gốc có mức 1, mỗi nút cần 1 ô nhớ)

 128 ô
 255 ô
 64 ô
 256 ô

Câu 38: Một cây nhị phân có chiều cao là 7, cây đó chỉ có 50 nút. Nếu lưu trữ kế tiếp thì lãng phí
bao nhiêu ô ( nút gốc có mức 1, mỗi nút chiếm 1 ô ):

 15 ô
 70 ô
 25 ô
 77 ô

Câu 39: Nếu lưu trữ móc nối thì mỗi nút của cây nhị phân cần 2 khoảng để ghi địa chỉ 2 con. Cây có
72 nút. Vậy lãng phí bao nhiêu khoảng địa chỉ:

 72
 70
 73
 75

Câu 40: Cây nhị phân T có 30 nút lá ( không có con). Cây đó có bao nhiêu nút cấp 2 ( có 2 con)

 15
 31
 30
 29

Câu 41: Cho cây nhị phân T có 70 nút cấp 2 ( có 2 con).Cây đó có bao nhiêu nút lá( không có con):

 36
 35
 71
 70

Câu 42: Cây 5 phân có nghĩa là gì?

 Cây đó có 5 nút
 Nút có cấp lớn nhất là 5
 Cây có chiều cao là 5
 Mức có nhiều nút nhất là 5

Câu 43: Cho dãy khoá 42,23,74,11,65,58,94,36


Lần lượt đưa dãy khoá trên vào cây nhị phân tìm kiếm. Nếu ta tìm kiếm trên cây nhị phân này thì
trong trường hợp xấu nhất phải làm bao nhiêu phép so sánh

 3
 4
 5
 6

Câu 44: Cho dãy khoá 42,23,74,11,65,58,94,36


Lần lượt đưa dãy khoá trên vào cây nhị phân tìm kiếm. Bây giờ ta muốn tìm kiếm xem trong dãy
khoá trên có khoá 105 không thì phải làm bao nhiêu phép so sánh:

 3
 4
 5
 8
Câu 45: Cho dãy khoá 42,23,74,11,65,58,94,36
Lần lượt đưa dãy khoá trên vào cây nhị phân tìm kiếm. Bây giờ ta muốn tìm kiếm xem trong dãy
khoá trên có khoá 60 không thì phải làm bao nhiêu phép so sánh:

 3
 5
 4
 7

Câu 46: Cho giải thuật đệ quy:


1.F(0,a)=F(a,0)=a (0 là số không)
2.F(m,n)=F(m-n,n) nếu m>=n
3.F(m,n)=F(m,n-m) nếu m<n< br="" style="box-sizing: border-box;">Nếu m=30, n = 75 thì sau khi
thực hiện giải thuật ta được giá trị nào:</n<>

 15
 30
 45
 10

Câu 47: Cho giải thuật đệ quy:


1.F(0,a)=F(a,0)=a (0 là số không)
2.F(m,n)=F(m-n,n) nếu m>=n
3.F(m,n)=F(m,n-m) nếu m<n< br="" style="box-sizing: border-box;">Nếu m=72, n = 48 thì sau khi
thực hiện giải thuật ta được giá trị nào:</n<>

 10
 20
 24
 4

Câu 48: Cho giải thuật đệ quy


1.F(1)=F(2)=1
2.F(k)=F(k-1)+F(k-2) nếu K>2
Hãy tính F(6):

 9
 10
 8
 7

Câu 49: Cho giải thuật đệ quy


1.F(1)=F(2)=1
2.F(k)=F(k-1)+F(k-2) nếu K>2
Hãy tính F(7):

 11
 13
 15
 10
Câu 50: Cho giải thuật đệ quy
1.F(1)=F(2)=1
2.F(k)=F(k-1)+F(k-2) nếu K>2
Hãy tính F(6):

 8
 51
 34
 42

Câu 51: Cho giải thuật đệ quy


1.F(1)=1, F(2)=2, F(3)=3
2.F(k)=F(K-1) + 2F(K-3) , K>3
Hãy tính F(6)

 16
 12
 13
 15

Câu 52: Cho giải thuật đệ quy


1.F(1)=1, F(2)=2, F(3)=2
2.F(k)=F(K-1) + 2F(K-3) , K>3
Hãy tính F(6)

 10
 12
 15
 16

Câu 53: Cho giải thuật đệ quy


1.F(1)=1
2.F(K)=KF(K-1), K>1
Hãy tính F(4)

 12
 30
 24
 20

Câu 54: Giải thuật:


1.F(1)=1
2.F(K)=KF(K-1), K>1
Dùng trong trường hợp nào

 Tính số Fibonacci
 Tính bình phương của K
 Tính giai thừa của K
 Tính lập phương của F

Câu 55: Cho giải thuật đệ quy:


1.C(n,n)=C(n,0)=1
2.C(n,k)=C(n-1,k)+C(n-1,k-1) với n>k>0
Hãy tính C(4,2)

 5
 6
 7
 8

Câu 56: Có 6 tầu x1,x2,x3,x4,x5,x6. Gọi V là lệnh đưa 1 đầu tầu vào kho ( kho là 1 STACK), R là
lệnh đưa 1 đầu tầu từ kho ra để sửa: Vởy ta phải thực hiện các lệnh V, R theo thứ tự nào để ta sẽ sửa
chữa lần lượt 3 đầu tầu: x3, x2, x4

 V(1) V(2) V(3) V(4) R(4) R(3) R(2)


 V(1) R(1) V(2) R(2) V(3) V(4) R(4)
 V(1) V(2) V(3) R(3) R(2) V(4) R(4)
 V(1) V(2) R(2) R(1) V(3) V(4) R(4)

Câu 57: Cho dẫy khoá 42,23,74,11,65,58 . Dùng phương pháp sắp xếp kiểu chọn (selection sort),
sau 3 bước dãy có dạng nào

 11,23,42,74,58,65
 42,11,74,23,58,65
 11,23,42,74,65,58
 11,23,74,58,65,42

Câu 58: Cho dẫy khoá 42,23,74,11,65,58. Dùng phương pháp sắp xếp kiểu chèn (insert sort), sau 3
bước dãy có dạng nào

 11,23,42,74,65,58
 11,23,42,65,74,58
 11,23,58,65,42,74
 11,23,42,74,58,65

Câu 59: Cho dẫy khoá 42,23,74,11,65,58,94,36. Sắp xếp dãy khoá theo kiểu nổi bọt (buble sort),
sau mấy bước phần tử 36 giữ vị trí ổn định của nó

 4
 2
 3
 5

Câu 60: Cho dẫy khoá 42,23,74,11,65,58,94,36. Sắp xếp dãy khoá theo kiểu nổi bọt (buble sort),
sau mấy bước phần tử 11 giữ vị trí ổn định của nó

 1
 2
 3
 4

Câu 61: Cho dẫy khoá 42,23,74,11,65,58,94,36,99,87 .Sắp xếp dãy khoá theo kiểu nổi bọt (buble
sort), sau bước thứ 1, khoá 87 về vị trí thứ mấy
 7
 8
 9
 10

Câu 62: Cho dẫy khoá 42,23,74,11,65,58,94,36,99,87. Sắp xếp dãy khoá theo kiểu nổi bọt (buble
sort), sau bước thứ 1, ba vị trí cuối cùng là các khoá nào:

 74,99,87
 58,87,99
 87,94,99
 36,99,87

Câu 63: Cho dẫy khoá 42,23,74,11,65,58,94,36,99,87. Sắp xếp dãy khoá theo kiểu phân đoạn, sau
bước thứ 1, ba vị trí đầu tiên là các khoá nào:

 11,23,36
 11,42,23
 11,42,36
 11,42,58

Câu 64: Cho dẫy khoá 42,23,74,11,65,58,94,36,99,87 .Sắp xếp dãy khoá theo kiểu chèn( insert
sort), sau 3 bước ba vị trí cuối cùng là các khoá nào:

 65,94,99
 87,94,99
 36,99,87
 58,94,99

Câu 65: Cho 2 dãy đã sắp xếp:


A:15,17,19,21,30,48
B:7,9,16,22,47
Sắp xếp 2 dãy này theo kiểu hoà nhập và dãy C. Phần tử C7 của dãy C là khoá nào?

 16
 22
 19
 21

Câu 66: Cho dãy 7,9,15,16,2,8,3,6,10,4,17. Sắp xếp 2 dãy trên bằng phương pháp tạo run. Có thể
tạo ít nhất là bao nhiêu run

 3
 4
 5
 6

Câu 67: Cho 1 dãy khoá K=( K1,K2,……,Kn). Nếu dãy khoá này ta tạo ra 8 run và dùng phương
pháp sắp xếp kiểu hoà nhập thì ta phải hoà nhập mấy bước:

 2
 3
 4
 5

Câu 68: 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á nào:

 4
 5
 6
 7

Câu 69: Trong giải thuật con mã đi tuần, nếu con mã đặt đầu tiên ở ô(5,8) thì bước sau nó có thể đi
đến ô:

 (3,7)
 (4,8)
 (5,6)
 (6,6)

Câu 70: Cho giải thuật đệ quy


1.F(1)=1,F(2)=2
2.F(k)=F(k-1)+2F(k-2), k>2
Hãy tính F(5)

 13
 17
 16
 15

Câu 71: Cho mảng 2 chiều: A={F(i j)}. Mảng có 10 hàng, 11 cột. Nếu lưu trữ liên tiếp mảng A, ưu
tiên hàng, mỗi phần tử chiếm 5 ô, phần tử đầu tiên có địa chỉ 57 thì phần tử F(48) có địa chỉ nào:

 430
 742
 131
 422

Câu 72: Lưu trữ liên tiếp một cây 7 phân ( mỗi nút chiếm 1 ô). Con cuối cùng của nút 25 chiếm ô
nào:

 176
 128
 175
 160

You might also like