Cấu trúc dữ liệu và giải thuật - IT05 (255)
Cho biết đây là ý tưởng của thuật toán nào:
Xuất phát từ dãy đầu a0, a1, …, ai, xét các phần tử sau đó từ ai+1 đến an xem có phần tử nào nhỏ hơn ai không thì hoán đổi vị trí => Sau mỗi lần luôn được dãy a0, a1, …, ai đã được sắp thứ tự
A. Ý tưởng của thuật toán sắp xếp InterchangeSort
B. Ý tưởng của thuật toán tìm kiếm nhị phân
C.
Ý tưởng của thuật toán sắp xếp InsertionSort
D. Ý tưởng của thuật toán tìm kiếm tuyến tính
Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau:
struct DoThi { int n; float C[ max ][ max ]; };
Cho biết đoạn chương trình con sau thực hiện gì?
void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf("%8.1f",G.C[i][j]); printf("\n"); }}
A. In ma trận kề của đồ thị
B. In ma trận trọng số của đồ thị
C. In danh sách kề của đồ thị
D. In danh sách cạnh của đồ thị
Các thành phần của danh sách liên kết kép gồm:
A. Dữ liệu (infor), liên kết với nút trước (previous) và liên kết với nút sau (next)
B. Liên kết với nút trước (previous) và liên kết với nút sau (next)
C. Dữ liệu (infor) và liên kết với nút sau (next)
D. Dữ liệu (infor) và liên kết với nút trước (previous)
Cho đoạn chương trình như sau:
void RemoveHead( DLIST &DQ )
{
DNode*p;
if ( DQ.Head != NULL)
{
p = DQ.Head;
DQ.Head = DQ.Head -> next;
(...1...)
free(p);
if ( DQ.Head == NULL)DQ.Tail = NULL;
}
}
Đoạn lệnh được đưa vào (1) là?
A. DQ.Head -> pre = NULL; DQ.Head -> next= NULL;
B. DQ.Head -> pre = NULL;
C. Các đáp án đều sai
D. DQ.Head -> next = NULL;
Cho đoạn mã sau, cho biết đoạn mã biểu diễn thuật toán gì?
Bước 1: S = 1, i = 1;
Bước 2: Nếu i<n thì s = s*i, qua bước 3;
Ngược lại qua bước 4;
Bước 3: i = i + 1;
Quay lại bước 2;
Bước 4: Xuất S ra màn hình
A. Tính (n-1)!
B. Tính tổng các giá trị 1+2+3+…+n
C. Tính tổng các giá trị 1*1*2*3*…*n
D. Tính n!
Để tính biểu thức s = xn với n>=0 ta chọn hàm
A. long F(int x, int n) { if (n==1) return 1; else return x*F(x,n-1); }
B. long F(int x, int n) { if (n==0) return 1; else return x*x*F(x,n-1); }
C. long F(int x, int n) { if (n==0) return 1; else return x*F(x,n-1); }
D. long F(int x, int n) { if (n==0) return 1; else return x*F(x,n); }
Cho biết kết quả của đoạn chương trình sau:
long f5(int n)
{
if (2*n==2)
return 2;
else
return 2*n + f5(n-1);
}
int main()
{
long x = f5(3);
printf("%ld", x);
getch();
}
Độ phức tạp thuật toán được đánh giá có loại nào?
A. Cả hai loại được liệt kê
B. Độ phức tạp thời gian
C. Độ phức tạp không gian
D. Không phải các loại liệt kê
Thuật toán được biểu diễn bằng cách nào
A. Sơ đồ khối
B. Tất cả các cách được liệt kê
C. Giả mã
D. Liệt kê từng bước
Để xác định giải thuật đệ quy cần xác định gì?
A. Phần tử neo
B. Cả hai lựa chọn đều đúng
C. Công thức tổng quát
D. Cả hai lựa chọn đều sai
Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm
A. float F(int n) { if (n==1) return 1.0/2; else return (float)(n+1)/(n+1) + F(n-1); }
B. float F(int n) { if (n==1) return 1.0/2; else return (float)n/ ( n) + F(n-1); }
C. float F(int n) { if (n==1) return 1.0/2; else return (float)n/(n+1) + F(n-1); }
D. float F(int n) { if (n==1) return 1.0/2; else return (float)n/(n+1) + F (n-1); }
Để tính biểu thức s = ½ + ¼ + … + 1/(2n) với n>=1 ta chọn hàm
A. float F( int n ) { if (n ==1 ) return 1.0/2; else return 1.0/n + F(n-1); }
B. float F( int n ) { if (n ==1 ) return 1.0/2; else return 1.0/2*n + F(n-1); }
C. float F( int n ) { if (n ==1 ) return 1.0/2; else return 1.0/(2*n) + F(n-1); }
D. float F( int n ) { if (n ==1 ) return 1.0/2; else return 1.0/(2*n) + F1(n-1); }
Cho biết kết xuất của đoạn chương trình sau:
long F(int n)
{
if ((2*n+1) ==1)
return 1;
else
return (2*n+1)+F(n-1);
}
void main()
{
long x=F(3);
printf("%ld", x);
}
Trong giải thuật đệ quy thì lời giải trực tiếp mà không phải nhờ đến một bài toán con nào đó là thành phần nào?
A. Công thức tổng quát
B. Phần tử neo
C. Cả hai lựa chọn đều sai
D. Cả hai lựa chọn đều đúng
** Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp nổi bọt (Bubble Sort) để sắp xếp giảm dần, sau lần lặp thứ ba kết quả của dãy là thế nào?
A. 74, 65, 42, 23, 58, 11
B. 74, 42, 23, 65, 11, 58
C. 74, 65, 58, 42, 23, 11
D. 42, 23, 74, 11, 65, 58
Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần, sau 4 lần lặp kết quả của dãy là thế nào?
A. 11, 23, 58, 42, 65, 74
B. 11, 23, 42, 58, 65, 74
C. 11, 23, 58, 42, 74, 65
D. 42, 23, 74, 11, 65, 58
Cho dãy sau: 23, 78, 45, 8, 32, 56. Dùng phương pháp sắp xếp chọn trực tiếp (Selection Sort) để sắp xếp tăng dần, sau 3 lần lặp thì kết quả của dãy là thế nào?
A. 8, 23, 32, 78, 45, 56
B. 8, 23, 32, 78, 56, 45
C. 8, 23, 78, 45, 32, 56
D. 23, 78, 45, 8, 32, 56
Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần, sau 1 lần lặp kết quả của dãy là thế nào?
A. 11, 42, 23, 74, 58, 65
B. 42, 23, 74, 11, 65, 58
C. 11, 23, 42, 58, 74, 65
D. 11, 23, 42, 58, 65, 74
Cho dãy 10, 5, 7, 3, 9, 2, 15, 1. Dùng thuật toán sắp xếp tăng dần bằng QuickSort, cho biết ở lần duyệt thứ nhất giá trị của x, L và R là gì?
A. L=1; R=7; x=3;
B. L=0; R=7; x=3;
C. L=0; R=8; x=9;
D. L=0; R=8; x=9;