JavaScript is required
Danh sách đề

220 câu trắc nghiệm Cấu trúc dữ liệu và giải thuật - Phần 1

50 câu hỏi 60 phút

Thẻ ghi nhớ
Luyện tập
Thi thử
Nhấn để lật thẻ
1 / 50

Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử

void BubbleSort(int M[], int N) 

{

[2] int Temp;

[3] for (int I = 0; I < N-1; I++)

[4] …………………………………..

[5] if (M[J] < M[J-1])

[6] {

[7] Temp = M[J];

[8] M[J] = M[J-1];

[9] M[J-1] = Temp;

[10] }

[11] return;

[12] }

[13]

Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ [5] của thủ tục:

A.

for (int J = N-1; J > I; J++)

B.

for (int J = N; J < I; J--)

C.

for (int J = N-1; J > I; J--)

D.

Không có dòng lệnh nào phù hợp, không cần thêm vào thuật toán vẫn chạy đúng

Đáp án
Đoạn code trên mô tả thuật toán sắp xếp nổi bọt (Bubble Sort). Vòng lặp `for` ở dòng [3] duyệt qua các phần tử từ đầu mảng đến gần cuối mảng. Vòng lặp bên trong (dòng [4] cần điền) sẽ so sánh các cặp phần tử liền kề và đổi chỗ nếu chúng không đúng thứ tự. Để thuật toán hoạt động đúng, vòng lặp bên trong cần duyệt từ cuối mảng về vị trí `I`. Điều này đảm bảo rằng sau mỗi lần lặp của vòng ngoài, phần tử lớn nhất chưa được sắp xếp sẽ "nổi" lên vị trí đúng của nó ở cuối mảng. Phương án 1: `for (int J = N-1; J > I; J++)` có vẻ đúng nhưng tăng J lên thay vì giảm J. Phương án 2: `for (int J = N; J < I; J--)` sai vì điều kiện `J < I` không phù hợp, và `J` bắt đầu từ `N` (vượt quá chỉ số mảng). Phương án 3: `for (int J = N-1; J > I; J--)` đúng vì nó bắt đầu từ cuối mảng (`N-1`), duyệt ngược về `I+1` (`J > I`), và giảm `J` mỗi lần lặp. Trong mỗi lần lặp của vòng ngoài, các phần tử từ `M[I+1]` đến `M[N-1]` đã được sắp xếp đúng vị trí. Vòng lặp này đảm bảo các cặp `M[J]` và `M[J-1]` được so sánh và hoán đổi nếu cần thiết, đẩy phần tử lớn nhất trong đoạn `M[I]` đến `M[N-1]` lên đúng vị trí. Phương án 4: "Không có dòng lệnh nào phù hợp..." là sai, vì vòng lặp bên trong là cần thiết cho thuật toán hoạt động. Vậy, phương án đúng là phương án 3.

Danh sách câu hỏi:

Lời giải:
Đáp án đúng: C
Đoạn code trên mô tả thuật toán sắp xếp nổi bọt (Bubble Sort). Vòng lặp `for` ở dòng [3] duyệt qua các phần tử từ đầu mảng đến gần cuối mảng. Vòng lặp bên trong (dòng [4] cần điền) sẽ so sánh các cặp phần tử liền kề và đổi chỗ nếu chúng không đúng thứ tự. Để thuật toán hoạt động đúng, vòng lặp bên trong cần duyệt từ cuối mảng về vị trí `I`. Điều này đảm bảo rằng sau mỗi lần lặp của vòng ngoài, phần tử lớn nhất chưa được sắp xếp sẽ "nổi" lên vị trí đúng của nó ở cuối mảng. Phương án 1: `for (int J = N-1; J > I; J++)` có vẻ đúng nhưng tăng J lên thay vì giảm J. Phương án 2: `for (int J = N; J < I; J--)` sai vì điều kiện `J < I` không phù hợp, và `J` bắt đầu từ `N` (vượt quá chỉ số mảng). Phương án 3: `for (int J = N-1; J > I; J--)` đúng vì nó bắt đầu từ cuối mảng (`N-1`), duyệt ngược về `I+1` (`J > I`), và giảm `J` mỗi lần lặp. Trong mỗi lần lặp của vòng ngoài, các phần tử từ `M[I+1]` đến `M[N-1]` đã được sắp xếp đúng vị trí. Vòng lặp này đảm bảo các cặp `M[J]` và `M[J-1]` được so sánh và hoán đổi nếu cần thiết, đẩy phần tử lớn nhất trong đoạn `M[I]` đến `M[N-1]` lên đúng vị trí. Phương án 4: "Không có dòng lệnh nào phù hợp..." là sai, vì vòng lặp bên trong là cần thiết cho thuật toán hoạt động. Vậy, phương án đúng là phương án 3.
Lời giải:
Đáp án đúng: D
Đề bài yêu cầu hoàn thiện đoạn code sắp xếp chọn trực tiếp bằng cách điền vào chỗ trống các câu lệnh hoán đổi giá trị của hai phần tử trong mảng. Thuật toán sắp xếp chọn trực tiếp tìm phần tử nhỏ nhất trong phần còn lại của mảng và hoán đổi nó với phần tử ở vị trí hiện tại. Để hoán đổi hai phần tử M[K] và M[PosMin], ta cần một biến tạm (Temp) để lưu giá trị của M[K], sau đó gán M[PosMin] cho M[K], và cuối cùng gán giá trị của Temp (giá trị ban đầu của M[K]) cho M[PosMin]. Phương án 4 thực hiện đúng các bước này. Các phương án khác sai vì: - Phương án 1 gán M[K] cho Temp, sau đó gán M[PosMin] cho Temp, vậy Temp chỉ giữ giá trị M[PosMin], và sau đó gán Temp cho M[PosMin], do đó M[K] không thay đổi. - Phương án 2 gán M[K] cho Temp, sau đó gán M[PosMin] cho M[K]. Cuối cùng gán Temp cho M[PosMin]. Tuy nhiên, dòng M[K] = Temp; không đúng vì cần phải gán M[K] = M[PosMin]; trước. - Phương án 3 gán M[K] cho Temp, sau đó gán M[K] cho M[PosMin]. Cuối cùng gán Temp cho M[PosMin]. Tuy nhiên, dòng M[PosMin] = M[K]; không đúng vì cần phải gán M[K] = M[PosMin]; trước.
Lời giải:
Đáp án đúng: C
Thuật toán sắp xếp chọn trực tiếp (Selection Sort) hoạt động bằng cách tìm phần tử nhỏ nhất trong phần chưa được sắp xếp của dãy, sau đó hoán đổi nó với phần tử đầu tiên của phần chưa được sắp xếp đó. Quá trình này lặp lại cho đến khi toàn bộ dãy được sắp xếp. Dãy số đã cho có 10 phần tử. Để sắp xếp một dãy có n phần tử bằng thuật toán sắp xếp chọn trực tiếp, ta cần thực hiện n-1 lần chọn phần tử nhỏ nhất và hoán đổi. Trong trường hợp này, n = 10, vậy số lần chọn lựa cần thiết là 10 - 1 = 9. Vậy, cần thực hiện 9 lần chọn lựa phần tử nhỏ nhất để sắp xếp mảng có thứ tự tăng dần.
Lời giải:
Đáp án đúng: D
Trong thuật toán sắp xếp chèn trực tiếp (Insertion Sort), ta duyệt qua mảng từ phần tử thứ hai đến hết. Với mỗi phần tử, ta chèn nó vào vị trí thích hợp trong dãy con đã được sắp xếp ở phía trước. Mảng M có N = 11 phần tử. Vì phần tử đầu tiên (11) được coi là dãy con đã được sắp xếp, nên ta cần chèn các phần tử còn lại vào dãy con này. Vậy số lần chèn cần thực hiện là N - 1 = 11 - 1 = 10.
Lời giải:
Đáp án đúng: A
Cây biểu thức được xây dựng từ dưới lên trên. Các toán hạng (số) nằm ở lá, và các toán tử (+, -, *, /...) nằm ở các nút bên trong. Để chuyển đổi cây biểu thức về biểu thức tiền tố (prefix), trung tố (infix) hoặc hậu tố (postfix), ta thực hiện duyệt cây theo thứ tự tương ứng. Trong trường hợp này, ta cần tìm biểu thức trung tố (infix). Bắt đầu từ gốc của cây, ta thấy toán tử là '*'. Bên trái là số 2. Bên phải là một cây con khác. Cây con bên phải có toán tử gốc là '+'. Bên trái là số 4. Bên phải là một cây con khác. Cây con bên phải này có toán tử gốc là '+'. Bên trái là số 5. Bên phải là số 3. Vậy, biểu thức tương ứng là: (2 * (4 + (5 + 3))) Do đó, đáp án đúng là phương án 1.

Câu 6:

Với thủ tục như sau:

void operation()

{

 int x,a[10],n; 

int x,m,l,h,flag=0;

cout<<"Enter the element to be searched:";

cin>>x;

l=0; h=n-1;

 while(l<=h)

 {

m=(l+h)/2;

 if(x==a[m]) {

lag=1; break;

}

else if(x>a[m])

l=m+1;

else if(x<a[m]) 

h=m-1;

}

 if(flag==0)

cout<<"ABSENT";

else

cout<<"PRESENT";

}

Lựa chọn câu đúng nhất để mô tả thủ tục trên

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 12:

Thao tác nào dưới đây thực hiện trên hàng đợi (queue):

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 13:

Nút có khóa nhỏ nhất trong cây nhị phân tìm kiếm khác rỗng là:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 14:

Cây nhị phân khác rỗng là cây:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 15:

Đồ thị vô hướng G có chu trình Euler khi và chỉ khi:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 17:

Cho biểu thức a+b*((c-d)*e+f/h). Danh sách duyệt tiền tự của biểu thức đã cho là:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 18:

Chỉ ra kiểu dữ liệu cơ bản:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 19:

Mối quan hệ giữa cấu trúc dữ liệu và giải thuật có thể minh hoạ bằng đẳng thức:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 25:

Hãy cho biết phương pháp nào sau đây để loại bỏ nút X trên cây nhị phân tìm kiếm, với X là một phần tử bất kỳ?

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 26:

Trong các danh sách tuyến tính sau đây, danh sách nào sau đây có dạng ngăn xếp?

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 28:

Hãy cho biết ý tưởng nào sau đây nói về phương pháp sắp xếp chọn tăng dần (select sort)?

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 31:

Giải thuật đệ quy là:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 32:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 33:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 35:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 36:

Để 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:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 37:

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:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 38:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 39:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 40:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 43:

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:

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 45:

Độ cao của cây là gì?

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 47:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Câu 49:

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

Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP