JavaScript is required
Loading [MathJax]/jax/output/CommonHTML/jax.js

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

Trả lờ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(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(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(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]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.

Đề cương ôn thi với 220 câu trắc nghiệm Cấu trúc dữ liệu và giải thuật có đáp án được chọn lọc và chia sẻ dưới đây, nhằm giúp bạn sinh viên hệ thống kiến thức chuẩn bị cho kì thi sắp diễn ra.


50 câu hỏi 60 phút

Câu hỏi liên quan