Áp dụng giải thuật sắp xếp chọn trực tiếp (Selection Sort) trên dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Tổng số lần hoán vị sau vòng lặp thứ tư là bao nhiêu? 3 Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) trên dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Tổng số lần hoán vị sau vòng lặp thứ hai là bao nhiêu? 9 B Cây bậc M thì mỗi nút có tối đa bao nhiêu cây con? M Bài toán này sau đây không áp dụng giải thuật quay lui để giải quyết vấn đề? Bài toán Tháp Hanoi Bảng băm sử dụng phương pháp băm kép sử dụng bao nhiêu hàm băm? 2 Bảng băm sử dụng phương pháp băm nối kết trực tiếp, số lượng phần tử lưu trữ trong bảng băm là: Không hạn chế, chỉ phục thuộc kích thước bộ nhớ. Bảng băm sử dụng phương pháp dò tuyến tính sử dụng bao nhiêu hàm băm? 1 Bảng băm sử dụng phương pháp nối kết trực tiếp, các phần tử bị xung đột sẽ lưu vào: Cùng một danh sách liên kết. Bảng băm với phương pháp dò tuyến tính, số lượng phần tử tối đa bảng băm có thể chứa là: Bằng kích thước bảng băm Bảng băm với phương pháp dò tuyến tính, số lượng phần tử tối đa bảng băm có thể chứa là: Bằng kích thước bảng băm Cấu trúc dữ liệu của bảng băm sử dụng phương pháp nối kết trực tiếp là: Mảng các danh sách liên kết Cấu trúc dữ liệu của bảng băm sử dụng phương pháp nối kết trực tiếp là: Mảng các danh sách liên kết Cho B Cây bậc 3 rỗng, kết quả sau khi chèn liên tiếp các khóa: 3, 10, 4, 20 vào B Cây này là: Cho biết kết quả in ra màn hình của đoạn chương trình sau: float a=11; int b=4.2; float c; c=a*b; printf("%7.2f",c); 44.00 Cho biết kết quả in ra màn hình của đoạn chương trình sau: float a=11; float b=4; float c; c=a/b; printf("%4.1f",c); 2.8 Cho biết kết quả in ra màn hình của đoạn chương trình sau: int a=10; int b=3; int c; c=a/b; printf(“%d”,c); 3 Cho biết kết quả in ra màn hình của đoạn chương trình sau: float a=11; int b=4.2; float c; c=a*b; printf("%7.2f",c); 44.00 Cho cây nhị phân: Chiều cao của cây là bao nhiêu? 4 Cho cây nhị phân: Áp dụng phương pháp duyệt cây kiểu nào để được kết quả? 2 34 6 10 20 9 17 39 5 30 Thứ tự sau (LRN) Cho cây nhị phân: Áp dụng phương pháp duyệt cây kiểu nào để được kết quả? 30 20 34 2 10 6 5 17 9 39 Thứ tự trước (NLR) Cho cây nhị phân: Áp dụng phương pháp duyệt cây kiểu nào để được kết quả? 2 34 6 10 20 9 17 39 5 30 Thứ tự sau (LRN) Cho dãy các khóa: 1, 3, 4, 2, 3, 3, 0, 10. Dãy khóa này có bao nhiêu Run? 3 Cho dãy số: 19, 13, 18, 7, 2, 10, 5, 3 Áp dụng giải thuật sắp xếp cây (Heap Sort) giai đoạn 2 trên dãy heap, sau khi thực hiện xong vòng lặp thứ nhất được kết quả: 18, 13, 10, 7, 2, 3, 5, 19 Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Áp dụng giải thuật sắp xếp cây (Heap Sort) trên dãy số đã cho, sau khi hiệu chỉnh dãy số trên thành heap (giai đoạn 1) được kết quả như sau: 19, 10, 18, 7, 2, 13, 5, 3 Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Áp dụng giải thuật sắp xếp chọn trực tiếp (Selection Sort) trên dãy số trên, sau vòng lặp thứ nhất được kết quả: 2, 3, 13, 10, 19, 18, 5, 7 Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Áp dụng giải thuật sắp xếp đổi chỗ trực tiếp (Interchange Sort) trên dãy số đã cho, sau vòng lặp thứ nhất được kết quả: 2, 19, 13, 10, 3, 18, 5, 7 Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7 Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) trên dãy số trên, sau vòng lặp đầu tiên được dãy số: 2, 19, 3, 13, 10, 5, 18, 7 Cho dãy số: 3, 10, 13, 18, 2, 19, 5, 7 Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) theo thứ tự giảm dần trên dãy số trên, sau vòng lặp đầu tiên được dãy số: 19, 3, 10, 13, 18, 2, 7, 5 Cho đoạn chương trình thao tác trên một danh sách liên kết đơn (không quan tâm dữ liệu) được viết như sau: Node* Dx = NULL; Node* p = Dx; for(i=0; i < 3; i++) { p = p->pNext; p = new(Node); } p->pNext = NULL; Dx = P; Sau khi thực hiện đoạn chương trình, con trỏ Dx trỏ đến đâu? Phần tử được thêm ở vòng lặp thứ ba. Cho đoạn mã lệnh sau: #include int main() { FILE *fs, *ft, *fp; fp = fopen("A.C","r"); fs = fopen("B.C", "r"); ft = fopen("C.C", "r"); fclose(fp, fs, ft); return 0; } Tập tin nào sẽ được đóng khi thực thi đoạn mã lệnh trên? Lỗi thực thi Cho hàm băm h(k) được tính bằng cách lấy mã ASCII của ký tự cuối của k chia lấy phần dư cho 26, với k=”ABC” thì giá trị của h(k) là: 15 Cho hàm băm h(k)=1+(k mod 11), với k=88 thì giá trị của h(k) là: 1 Cho hàm sắp xếp: void ProSort(int a[], int N) { int i, j; for (i=1; ii;j--) if(a[j]< a[j-1]) Swap(a[j], a[j-1]); } Hàm trên cài đặt phương pháp sắp xếp nào? Nổi bọt (Bubble Sort) Cho hàm sắp xếp: void ProSort(int a[], int N) { int i, j; for(i=1; ipNext = p->pNext; if(p == l.pTail) l.pTail = q; else p->pNext->pPrev = q; delete p; } } return x; } Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép? Xóa phần tử ở sau phần tử q. Cho trước đoạn chương trình: void ProList(List &l, Node* p) { if (l.pHead==NULL) { l.pHead = p; l.pTail = l.pHead; } else { p->pNext = l.pHead; l.pHead->pPrev = p; l.pHead = p; } } Hàm ProList cài đặt thao tác nào trong danh sách liên kết kép? Thêm phần tử vào đầu danh sách. Cho trước đoạn chương trình: typedef struct Node { int Info; Node* pNext; }Node; typedef struct List { Node* pHead; Node* pTail; }List; void ProSort(List &l) { Node *p, *q; p = l.pHead; while(p!=NULL) { q = p->pNext; while(q!=NULL) { if (p->Info > q->Info) Swap(p->Info,q->Info); q = q->pNext; } p = p->pNext; } } Hàm ProSort sắp xếp trên danh sách liên kết đơn dựa trên giải thuật sắp xếp: Đổi chỗ trực tiếp (Interchange Sort). Cho trước đoạn chương trình: typedef struct Node { int Info; Node* pNext; }Node; typedef struct List { Node* pHead; Node* pTail; }List; void ProSort(List &l) { Node *p, *q, *pmin; p = l.pHead; while(p!=NULL) { pmin = p; q = p->pNext; while(q!=NULL) { if (pmin->Info > q->Info) pmin = q; q = q->pNext; } if (pmin != p) Swap(pmin->Info, p->Info); p = p->pNext; } } Hàm ProSort sắp xếp trên danh sách liên kết đơn dựa trên giải thuật sắp xếp: Chọn trực tiếp (Selection Sort). Cho trước đoạn chương trình: typedef struct Node { int Info; Node* pNext; }Node; typedef struct List { Node* pHead; Node* pTail; }List; void ProList(List &l) { Node *p; p = l.pHead; while(p!=NULL) { if (p->Info>=0) print(“%d”,p->Info); p = p->pNext; } } Hỏi hàm ProList thực hiện công việc gì trong danh sách liên kết đơn? In trường Info của các phần tử có giá trị không âm ra màn hình. Cho trước đoạn chương trình: Data ProNode(List &l) { Node *p; Data x; if ( l.pHead != NULL) { p = l.pHead; x = p->data; l.pHead=l.pHead->pNext; l.pHead->pPrev = NULL; delete p; if(l.pHead == NULL) l.pTail = NULL; } return x; } Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép? Xóa phần tử ở đầu danh sách. Cho trước đoạn chương trình: void ProList(List &l, Node* p) { if (l.pHead==NULL) { l.pHead = p; l.pTail = l.pHead; } else { p->pNext = l.pHead; l.pHead->pPrev = p; l.pHead = p; } } Hàm ProList cài đặt thao tác nào trong danh sách liên kết kép? Thêm phần tử vào đầu danh sách. Cho trước đoạn chương trình: Data ProNode(List &l, Node* q) { Node *p; if (q != NULL) { p = q->pNext; if ( p != NULL) { q->pNext = p->pNext; if(p == l.pTail) l.pTail = q; else p->pNext->pPrev = q; delete p; } } return x; } Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép? Xóa phần tử ở sau phần tử q. Cho trước hàm searchNode(TREE T, Data X): TNODE* searchNode(TREE T, Data X) { if(T!=NULL) { if(T->Key == X) return T; if(T->Key > X) return searchNode(T->pLeft, X); else return searchNode(T->pRight, X); } return NULL; } Và cây nhị phân tìm kiếm: Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 8 trên cây đã cho thì hàm searchNode gọi đệ qui bao nhiêu lần? 0 Đặc điểm cơ bản của phương pháp trộn tự nhiên là: Tận dụng được độ dài ban đầu của tập tin cần sắp xếp. Dạng hàm thể hiện độ phức tạp phải cài đặt lại giải thuật: n3 Data ProList(List &l) { Node *p; Data x; if ( l.pHead != NULL) { p = l.pHead; x = p->Info; l.pHead = l.pHead->pNext; delete p; if(l.pHead == NULL) l.pTail = NULL; } return x; } Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn? Xóa phần tử ở đầu danh sách. Data ProList(List &l) { Node *p; Data x; if ( l.pHead != NULL) { p = l.pHead; x = p->Info; l.pHead = l.pHead->pNext; delete p; if(l.pHead == NULL) l.pTail = NULL; } return x; } Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn? Xóa phần tử ở đầu danh sách. Dãy các khóa nào sau đây được gọi là Run (đường chạy) -3, -2, -1, 0 Độ phức tạp của giải thuật sắp xếp đổi chỗ trực tiếp (Interchange Sort). T(n) = O(n2) Độ phức tạp của giải thuật sắp xếp nổi bọt (Bubble Sort). T(n) = O(n2) Độ phức tạp của hàm: int tsle(int a[][],int n) { int i,j,tong=0; for(i=0;iKey); Output(Root->pRight); Output(Root->pLeft); } } Và cây nhị phân: Khi thực hiện hàm Output trên cây đã cho thì khóa nào được in ra màn hình sau cùng? 2 Hàm searchNode(TREE T, Data X) cho trước như sau: TNODE* searchNode(TREE T, Data X) { if(T!=NULL) { if(T->Key == X) return T; if(T->Key > X) return searchNode(T->pLeft, X); else return searchNode(T->pRight, X); } return NULL; } Và cây nhị phân tìm kiếm: Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 19 trên cây đã cho thì hàm searchNode gọi đệ qui bao nhiêu lần? 4 Hàm searchNode(TREE T, Data X) cho trước như sau: TNODE* searchNode(TREE T, Data X) { if(T!=NULL) { if(T->Key == X) return T; if(T->Key > X) return searchNode(T->pLeft, X); else return searchNode(T->pRight, X); } return NULL; } Và cây nhị phân tìm kiếm: Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 19 trên cây đã cho thì hàm searchNode gọi đệ qui bao nhiêu lần? 4 Hàm searchNode(TREE T, Data X) được cài đặt như sau: TNODE* searchNode(TREE T, Data X) { if(T!=NULL) { if(T->Key == X) return T; if(T->Key > X) return searchNode(T->pLeft, X); else return searchNode(T->pRight, X); } return NULL; } Và cây nhị phân tìm kiếm: Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 18 trên cây đã cho thì hàm searchNode gọi đệ qui bao nhiêu lần? 3 Hãy cho biết chiều cao của cây kết quả sau khi chèn liên tiếp các khóa: 4, 7, 9, 10, 13, 15, 16 vào B Cây bậc 3 rỗng? 2 Hãy cho biết chiều cao của cây kết quả sau khi chèn liên tiếp các khóa: 4, 7, 9, 10, 13, 15, 16 vào B Cây bậc 3 rỗng? 2 Hãy cho biết nút gốc của cây kết quả sau khi chèn liên tiếp các khóa: 4, 8, 3, 9, 15, 18 vào B Cây bậc 3 rỗng? 4, 9 int ProKey(TREE T) { TREE p=T; while(p->pRight!=NULL) p=p->pRight; return p->Key; } Thực hiện hàm ProKey trên cây nhị phân sau: thì hàm ProKey trả về giá trị: 30 int ProTree(TREE T) { if(T==NULL) return 0; else return ProTree(T->pLeft) +ProTree(T->pRight); } Thực hiện hàm ProTree trên cây nhị phân sau: thì hàm ProTree trả về giá trị: 10 Kết quả trên màn hình sau khi thực thi đoạn mã lệnh sau là gì? #include int main () { FILE * pFile; char c; pFile = fopen("sample.txt", "wt"); for (c = 'A'; c Info!=k)) p = p->pNext; return p; } Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn? Tìm phần tử trong danh sách. Nội dung của tập tin “file.c” sau khi thực hiện đoạn mã lệnh sau đây là gì? #include int main() { FILE *fp1, *fp2; fp1=fopen("file.c", "w"); fp2=fopen("file.c", "w"); fputc('A', fp1); fputc('B', fp2); fclose(fp1); fclose(fp2); return 0; } A Phát biểu nào sau đây là đúng về đặc trưng của các nút lá trên B Cây bậc M? Nút lá có nhiều nhất M-1 khóa. Phát biểu nào sau đây là đúng về phương pháp trộn đa lối cân bằng? Gộp quá trình phân phối và quá trình trộn trong cùng một giai đoạn Phương pháp sắp xếp nào sau đây có độ phức tạp thấp nhất? Merge Sort Phương pháp sắp xếp phân hoạch (Quick Sort) thực hiện sắp xếp trên một dãy 9 phần tử đã có thứ tự với tổng số lần hoán vị là bao nhiêu? 0 Phương pháp sắp xếp phân hoạch (Quick Sort) thực hiện sắp xếp trên một dãy 9 phần tử đã có thứ tự với tổng số lần gọi đệ qui là bao nhiêu? 4 Phương pháp trộn Run sử dụng bao nhiêu tập tin trung gian? 2 Phương pháp trộn tự nhiên sử dụng bao nhiêu tập tin trung gian? 2 Số bước lặp của giải thuật trộn tự nhiên phụ thuộc vào yếu tố nào? Số Run ban đầu của tập tin cần sắp xếp. Ta có hai chuỗi A = “qpqrr” và B = “pqprqrp”. Giả sử x là chiều dài của chuỗi con chung dài nhất của A và B, y là số các chuỗi con chung dài nhất của A và B. Giá trị của x + 10y =? 34 Tại sao B Cây được gọi là cây cân bằng? Khoảng cách từ nút gốc đến tất cả các nút lá bằng nhau. Thao tác lấy 1 đối tượng ra khỏi ngăn xếp (Stack) thường được gọi là Pop Thao tác thêm 1 đối tượng vào hàng đợi (Queue) thường được gọi là: Enqueue Tiết kiệm tài nguyên hệ thống. Số khóa của nút gốc luôn nhỏ hơn bậc của cây. Tính độ phức tạp của giải thuật sắp xếp chọn trực tiếp (Selection Sort). T(n) = O(n2) Tính độ phức tạp của giải thuật sắp xếp phân hoạch (QuickSort). T(n) = O(n2) Trên B Cây bậc M, nút được gọi là đầy khi nào? Khi số khóa lớn hơn M-1 Trong bốn phương pháp sắp xếp: chọn trực tiếp (Selection Sort), chèn trực tiếp (Insertion Sort), đổi chỗ trực tiếp (Interchange Sort) và nổi bọt (Bubble Sort). Phương pháp nào thực hiện sắp xếp nhanh nhất với một dãy đã có thứ tự? Giải thích. Chèn trực tiếp (Insertion Sort) do có số lần so sánh ít nhất. Trong khi lưu trữ và quản lý thông tin nhân viên (số lượng tối đa là 1000) gồm: mã số, họ tên, năm sinh và hệ số lương (có phần thập phân) , một lập trình viên khai báo cấu trúc dữ liệu như sau: typedef struct nv { char maso[4]; char hoten[30]; int namsinh; int hsluong; }nv; Cấu trúc dữ liệu trên chưa thỏa tiêu chuẩn đánh giá nào? Phản ánh đúng thực tế. Trong khi lưu trữ và quản lý thông tin nhân viên (số lượng tối đa là 1000) gồm: mã số, họ tên, năm sinh và hệ số lương (có phần thập phân) , một lập trình viên khai báo cấu trúc dữ liệu như sau: typedef struct nv { char maso[100]; char hoten[30]; long namsinh; int hsluong; }nv; Cấu trúc dữ liệu trên chưa thỏa các tiêu chuẩn đánh giá nào? Phản ánh đúng thực tế; tiết kiệm tài nguyên hệ thống. Trong khi lưu trữ và quản lý thông tin nhân viên (số lượng tối đa là 1000) gồm: mã số, họ tên, năm sinh và hệ số lương (có phần thập phân) , một lập trình viên khai báo cấu trúc dữ liệu như sau: typedef struct nv { char maso[100]; char hoten[30]; int namsinh; float hsluong; }nv; Cấu trúc dữ liệu trên chưa thỏa tiêu chuẩn đánh giá nào? Tiết kiệm tài nguyên hệ thống. Ứng dụng phương pháp tìm kiếm tuyến tính để tìm kiếm số 30 trên dãy số sau: 17, 23, 28, 30, 33, 35, 74, 93 Số nào trên dãy số được duyệt đầu tiên? 17 Với cây nhị phân tìm kiếm: Duyệt cây trên theo thứ tự NRL ta được kết quả: 8 20 30 11 18 9 3 5 4 2 Với một chữ cái tượng trưng cho thao tác thêm chữ cái tương ứng vào hàng đợi, dấu * tượng trưng cho thao tác lấy nội dung một phần tử trong hàng đợi in lên màn hình. Hãy cho biết sau khi hoàn tất chuỗi thao tác bên dưới, kết quả xuất hiện trên màn hình? EAS*Y**QUE***ST***I*ON EASYQUESTI void Output(TREE Root) { if (Root != NULL) { Output(Root->pLeft); Output(Root->pRight); printf(“%d ”,Root->Key); } } Hàm Output trên cài đặt phương pháp duyệt cây kiểu nào? Thứ tự sau (LRN) void ProList(List &l, Node* p) { if (l.pHead==NULL) { l.pHead = p; l.pTail = l.pHead; } else { p->pNext = l.pHead; l.pHead = p; } } Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn? Thêm phần tử vào đầu danh sách. void ProNode(List &l, Data x) { Node *p; p =new(node); p->Info =x; p->pNext =l.pHead; l.pHead =p; } Hàm ProNode cài đặt thao tác nào phù hợp nhất trên ngăn xếp (Stack)? Push void ProSum(int &a, int &b) { a=a+b; b=b+a; } void main() { int x=4; int y=6; ProSum(x, y); printf(“%d %d”,x ,y); } Kết quả in ra màn hình khi thực hiện chương trình trên? 10 16
Trang 1Áp dụng giải thuật sắp xếp chọn trực tiếp (Selection Sort) trên dãy số: 19, 3, 13,
10, 2, 18, 5, 7
Tổng số lần hoán vị sau vòng lặp thứ tư là bao nhiêu?
3
Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) trên dãy số: 19, 3, 13, 10, 2,
18, 5, 7
Tổng số lần hoán vị sau vòng lặp thứ hai là bao nhiêu?
9
Bài toán này sau đây không áp dụng giải thuật quay lui để giải quyết vấn đề? Bài toán Tháp Hanoi
Bảng băm sử dụng phương pháp băm kép sử dụng bao nhiêu hàm băm? 2
Bảng băm sử dụng phương pháp băm nối kết trực tiếp, số lượng phần tử lưu trữ
Bảng băm sử dụng phương pháp dò tuyến tính sử dụng bao nhiêu hàm băm? 1
Bảng băm sử dụng phương pháp nối kết trực tiếp, các phần tử bị xung đột sẽ
lưu vào:
Cùng một danh sách liên kết
Bảng băm với phương pháp dò tuyến tính, số lượng phần tử tối đa bảng băm có
thể chứa là:
Bằng kích thước bảng băm
Bảng băm với phương pháp dò tuyến tính, số lượng phần tử tối đa bảng băm có
thể chứa là:
Bằng kích thước bảng băm
Cấu trúc dữ liệu của bảng băm sử dụng phương pháp nối kết trực tiếp là: Mảng các danh sách liên kết
Cấu trúc dữ liệu của bảng băm sử dụng phương pháp nối kết trực tiếp là: Mảng các danh sách liên kết
Cho B Cây bậc 3 rỗng, kết quả sau khi chèn liên tiếp các khóa: 3, 10, 4, 20 vào
B Cây này là:
Cho biết kết quả in ra màn hình của đoạn chương trình sau:
float a=11;
int b=4.2;
float c;
c=a*b;
printf("%7.2f",c);
44.00
Cho biết kết quả in ra màn hình của đoạn chương trình sau:
float a=11;
float b=4;
float c;
c=a/b;
printf("%4.1f",c);
2.8
Cho biết kết quả in ra màn hình của đoạn chương trình sau:
int a=10;
int b=3;
int c;
c=a/b;
printf(“%d”,c);
3
Cho biết kết quả in ra màn hình của đoạn chương trình sau:
float a=11;
int b=4.2;
float c;
c=a*b;
printf("%7.2f",c);
44.00
Trang 2Chiều cao của cây là bao nhiêu?
Cho cây nhị phân:
Áp dụng phương pháp duyệt cây kiểu nào để được kết quả?
2 34 6 10 20 9 17 39 5 30
Thứ tự sau (LRN)
Cho cây nhị phân:
Áp dụng phương pháp duyệt cây kiểu nào để được kết quả?
30 20 34 2 10 6 5 17 9 39
Thứ tự trước (NLR)
Cho cây nhị phân:
Áp dụng phương pháp duyệt cây kiểu nào để được kết quả?
2 34 6 10 20 9 17 39 5 30
Thứ tự sau (LRN)
Cho dãy các khóa: 1, 3, 4, 2, 3, 3, 0, 10 Dãy khóa này có bao nhiêu Run? 3
Cho dãy số: 19, 13, 18, 7, 2, 10, 5, 3
Áp dụng giải thuật sắp xếp cây (Heap Sort) giai đoạn 2 trên dãy heap, sau khi
thực hiện xong vòng lặp thứ nhất được kết quả:
18, 13, 10, 7, 2, 3, 5, 19
Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7
Áp dụng giải thuật sắp xếp cây (Heap Sort) trên dãy số đã cho, sau khi hiệu
chỉnh dãy số trên thành heap (giai đoạn 1) được kết quả như sau:
19, 10, 18, 7, 2, 13, 5, 3
Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7
Áp dụng giải thuật sắp xếp chọn trực tiếp (Selection Sort) trên dãy số trên, sau
vòng lặp thứ nhất được kết quả:
2, 3, 13, 10, 19, 18, 5, 7
Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7
Áp dụng giải thuật sắp xếp đổi chỗ trực tiếp (Interchange Sort) trên dãy số đã
cho, sau vòng lặp thứ nhất được kết quả:
2, 19, 13, 10, 3, 18, 5, 7
Cho dãy số: 19, 3, 13, 10, 2, 18, 5, 7
Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) trên dãy số trên, sau vòng lặp
đầu tiên được dãy số:
2, 19, 3, 13, 10, 5, 18, 7
Trang 3Cho dãy số: 3, 10, 13, 18, 2, 19, 5, 7
Áp dụng giải thuật sắp xếp nổi bọt (Bubble Sort) theo thứ tự giảm dần trên dãy
số trên, sau vòng lặp đầu tiên được dãy số:
19, 3, 10, 13, 18, 2, 7, 5
Cho đoạn chương trình thao tác trên một danh sách liên kết đơn (không quan
tâm dữ liệu) được viết như sau:
Node* Dx = NULL;
Node* p = Dx;
for(i=0; i < 3; i++)
{
p = p->pNext;
p = new(Node);
}
p->pNext = NULL;
Dx = P;
Sau khi thực hiện đoạn chương trình, con trỏ Dx trỏ đến đâu?
Phần tử được thêm ở vòng lặp thứ ba
Cho đoạn mã lệnh sau:
#include<stdio.h>
int main()
{
FILE *fs, *ft, *fp;
fp = fopen("A.C","r");
fs = fopen("B.C", "r");
ft = fopen("C.C", "r");
fclose(fp, fs, ft);
return 0;
}
Tập tin nào sẽ được đóng khi thực thi đoạn mã lệnh trên?
Lỗi thực thi
Cho hàm băm h(k) được tính bằng cách lấy mã ASCII của ký tự cuối của k chia
lấy phần dư cho 26, với k=”ABC” thì giá trị của h(k) là: 15
Cho hàm băm h(k)=1+(k mod 11), với k=88 thì giá trị của h(k) là: 1
Cho hàm sắp xếp:
void ProSort(int a[], int N)
{
int i, j;
for (i=1; i<N; i++)
for (j=N; j>i;j )
if(a[j]< a[j-1])
Swap(a[j], a[j-1]);
}
Hàm trên cài đặt phương pháp sắp xếp nào?
Nổi bọt (Bubble Sort)
Cho hàm sắp xếp:
void ProSort(int a[], int N)
{
int i, j;
for(i=1; i<N; i++)
for (j =i+1; j<=N; j++)
if(a[j ]< a[i])
Swap(a[i],a[j]);
}
Hàm trên cài đặt phương pháp sắp xếp nào?
Đổi chỗ trực tiếp (Interchange Sort)
Trang 4Cho hàm sắp xếp:
void ProSort(int a[], int N)
{
int i, j;
for (i=1; i<N; i++)
for (j=N; j>i;j )
if(a[j]< a[j-1])
Swap(a[j], a[j-1]);
}
Hàm trên cài đặt phương pháp sắp xếp nào?
Nổi bọt (Bubble Sort)
Cho hàm sắp xếp:
void ProSort(int a[], int N)
{
int i, j;
for(i=1; i<N; i++)
for (j =i+1; j<=N; j++)
if(a[j ]< a[i])
Swap(a[i],a[j]);
}
Hàm trên cài đặt phương pháp sắp xếp nào?
Đổi chỗ trực tiếp (Interchange Sort)
Cho tập tin F0: 1, 3, 5, 2, 5, 10, 9 Áp dụng giải thuật trộn tự nhiên, số bước lặp
là:
2
Cho tập tin F0: 1, 3, 5, 2, 5, 10, 9 Để sắp xếp F0 sử dụng phương pháp trộn tự
nhiên cần có bao nhiêu tập tin trung gian?
2
Cho tập tin F0: 1, 5, 0, 4, 7, 6 Áp dụng giải thuật sắp xếp trộn Tự nhiên, kết
thúc bước lặp đầu tiên nội dung tập tin F0 là
0, 1, 4, 5, 6, 7
Cho tập tin F0: 5, 7, 2, 4, 8, 12, 4, 14, 23, 19, 20, 8 Áp dụng giải thuật sắp xếp
trộn trực tiếp (trộn Run), kết thúc bước lặp thứ ba nội dung tập tin F0 là
2, 4, 4, 5, 7, 8, 8, 12, 14, 19, 20, 23
Cho trước các khai báo:
typedef struct Nhanvien
{
char maso[8];
char hoten[30];
char chucvu[20];
int bacluong;
}Nhanvien;
typedef struct Node
{
Nhanvien Info;
Node* pNext;
}Node;
typedef struct List
{
Node* pHead;
Node* pTail;
}List;
Cấu trúc Node đóng vai trò gì trong danh sách liên kết đơn?
Phần tử
Trang 5Duyệt cây theo thứ tự sau (LRN) ta được kết quả
Cho trước cây nhị phân tìm kiếm:
Duyệt cây theo thứ tự trước (NLR) ta được kết quả
8 3 2 5 4 20 11 9 18 30
Cho trước đoạn chương trình:
void ProList(List &l, Node* p)
{
if (l.pHead==NULL)
{
l.pHead = p;
l.pTail = l.pHead;
}
else
{
l.pTail-> pNext = p;
p->pPrev = l.pTail;
l.pTail = p;
}
}
Hàm ProList cài đặt thao tác nào trong danh sách liên kết kép?
Thêm phần tử vào cuối danh sách
Cho trước đoạn chương trình:
Data ProNode(List &l, Node* q)
{
Node *p;
if (q != NULL)
{
p = q->pNext;
if ( p != NULL)
{
q->pNext = p->pNext;
if(p == l.pTail)
l.pTail = q;
else
p->pNext->pPrev = q;
delete p;
}
}
return x;
}
Xóa phần tử ở sau phần tử q
Trang 6Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép?
Cho trước đoạn chương trình:
void ProList(List &l, Node* p)
{
if (l.pHead==NULL)
{
l.pHead = p;
l.pTail = l.pHead;
}
else
{
p->pNext = l.pHead;
l.pHead->pPrev = p;
l.pHead = p;
}
}
Hàm ProList cài đặt thao tác nào trong danh sách liên kết kép?
Thêm phần tử vào đầu danh sách
Cho trước đoạn chương trình:
typedef struct Node
{
int Info;
Node* pNext;
}Node;
typedef struct List
{
Node* pHead;
Node* pTail;
}List;
void ProSort(List &l)
{
Node *p, *q;
p = l.pHead;
while(p!=NULL)
{
q = p->pNext;
while(q!=NULL)
{
if (p->Info > q->Info)
Swap(p->Info,q->Info);
q = q->pNext;
}
p = p->pNext;
}
}
Hàm ProSort sắp xếp trên danh sách liên kết đơn dựa trên giải thuật sắp xếp:
Đổi chỗ trực tiếp (Interchange Sort)
Cho trước đoạn chương trình:
typedef struct Node
{
int Info;
Node* pNext;
Chọn trực tiếp (Selection Sort)
Trang 7typedef struct List
{
Node* pHead;
Node* pTail;
}List;
void ProSort(List &l)
{
Node *p, *q, *pmin;
p = l.pHead;
while(p!=NULL)
{
pmin = p;
q = p->pNext;
while(q!=NULL)
{
if (pmin->Info > q->Info)
pmin = q;
q = q->pNext;
}
if (pmin != p)
Swap(pmin->Info, p->Info);
p = p->pNext;
}
}
Hàm ProSort sắp xếp trên danh sách liên kết đơn dựa trên giải thuật sắp xếp:
Cho trước đoạn chương trình:
typedef struct Node
{
int Info;
Node* pNext;
}Node;
typedef struct List
{
Node* pHead;
Node* pTail;
}List;
void ProList(List &l)
{
Node *p;
p = l.pHead;
while(p!=NULL)
{
if (p->Info>=0)
print(“%d”,p->Info);
p = p->pNext;
}
}
Hỏi hàm ProList thực hiện công việc gì trong danh sách liên kết đơn?
In trường Info của các phần tử có giá trị không âm ra màn hình
Trang 8Data ProNode(List &l)
{
Node *p;
Data x;
if ( l.pHead != NULL)
{
p = l.pHead;
x = p->data;
l.pHead=l.pHead->pNext;
l.pHead->pPrev = NULL;
delete p;
if(l.pHead == NULL)
l.pTail = NULL;
}
return x;
}
Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép?
Cho trước đoạn chương trình:
void ProList(List &l, Node* p)
{
if (l.pHead==NULL)
{
l.pHead = p;
l.pTail = l.pHead;
}
else
{
p->pNext = l.pHead;
l.pHead->pPrev = p;
l.pHead = p;
}
}
Hàm ProList cài đặt thao tác nào trong danh sách liên kết kép?
Thêm phần tử vào đầu danh sách
Cho trước đoạn chương trình:
Data ProNode(List &l, Node* q)
{
Node *p;
if (q != NULL)
{
p = q->pNext;
if ( p != NULL)
{
q->pNext = p->pNext;
if(p == l.pTail)
l.pTail = q;
else
p->pNext->pPrev = q;
delete p;
}
}
Xóa phần tử ở sau phần tử q
Trang 9return x;
}
Hàm ProNode cài đặt thao tác nào trong danh sách liên kết kép?
Cho trước hàm searchNode(TREE T, Data X):
TNODE* searchNode(TREE T, Data X)
{
if(T!=NULL)
{
if(T->Key == X)
return T;
if(T->Key > X) return searchNode(T->pLeft, X);
else return searchNode(T->pRight, X);
}
return NULL;
}
Và cây nhị phân tìm kiếm:
Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 8 trên cây đã cho thì
hàm searchNode gọi đệ qui bao nhiêu lần?
0
Đặc điểm cơ bản của phương pháp trộn tự nhiên là: Tận dụng được độ dài ban đầu của
tập tin cần sắp xếp
Dạng hàm thể hiện độ phức tạp phải cài đặt lại giải thuật: n3
Data ProList(List &l)
{
Node *p;
Data x;
if ( l.pHead != NULL)
{
p = l.pHead;
x = p->Info;
l.pHead = l.pHead->pNext;
delete p;
if(l.pHead == NULL)
l.pTail = NULL;
}
return x;
}
Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn?
Xóa phần tử ở đầu danh sách
Data ProList(List &l)
{
Node *p;
Data x;
if ( l.pHead != NULL)
{
Xóa phần tử ở đầu danh sách
Trang 10p = l.pHead;
x = p->Info;
l.pHead = l.pHead->pNext;
delete p;
if(l.pHead == NULL)
l.pTail = NULL;
}
return x;
}
Hàm ProList cài đặt thao tác nào trong danh sách liên kết đơn?
Dãy các khóa nào sau đây được gọi là Run (đường chạy) -3, -2, -1, 0
Độ phức tạp của giải thuật sắp xếp đổi chỗ trực tiếp (Interchange Sort) T(n) = O(n2)
Độ phức tạp của giải thuật sắp xếp nổi bọt (Bubble Sort) T(n) = O(n2)
Độ phức tạp của hàm:
int tsle(int a[][],int n)
{
int i,j,tong=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (a[i][j]%2==0)
tong=tong+a[i][j];
return tong;
}
T(n) = O(n2)
Đối với B Cây bậc 5 thì số khóa trên mỗi nút (ngoại trừ nút gốc) tối thiểu là: 2
Đối với B Cây bậc 7 khi thêm một khóa mới vào nút thì xảy ra hiện tượng tách
nút nếu số khóa của nút đó trước khi thêm là:
6
Đối với B Cây bậc 7 khi thêm một khóa mới vào nút thì xảy ra hiện tượng tách
nút nếu số khóa của nút đó trước khi thêm là:
6 Đối với phương pháp kp, hàm băm lại lần thứ i là h(k, i)=(h1(k)+i*h2(k))mod M Giả sử số phần tử của tập tin F0 ban đầu là 10, với phương pháp trộn Run thì
mỗi bước lặp sẽ có bao nhiêu thao tác sao chép (copy)? 20
Giả sử ta cần lưu trữ dãy các phần tử có khóa từ 0 đến 2020 vào bảng băm sử
dụng phương pháp băm nối kết trực tiếp, số bucket là 10 Hàm băm nào sau đây
là hợp lý nhất:
h(k)=k3 mod 10
Giả sử ta cần thêm các khóa: 4, 6, 2, 9, 5 vào B Cây bậc 3 rỗng, số lần tách nút
Giả sử ta có bảng băm kích thước 10 với phương pháp băm dò tuyến tính, hàm
băm h(k)= k mod 10 Khi chèn liên tiếp 6 phần tử vào bảng băm ta được kết
quả bên dưới:
0 1
8
46, 34, 42, 23, 52, 33
Trang 119 Hãy cho biết thứ tự chèn các phần tử vào bảng băm nào sau đây là hợp lý?
Giả sử ta có bảng băm sử dụng phương pháp nối kết trực tiếp chứa n phần tử
Độ phức tạp của giải thuật tìm kiếm trong trường hợp xấu nhất là: O(n)
Giả sử ta có bảng băm sử dụng phương pháp nối kết trực tiếp chứa n phần tử Độ
phức tạp của giải thuật tìm kiếm trong trường hợp xấu nhất là:
O(n)
Giải thuật sắp xếp sau đây:
-Bước 1: i = 2;
-Bước 2: x = a[i]; Tìm vị trí pos thích hợp trong đoạn a[1] đến a[i-1] để chèn
a[i] vào
-Bước 3: Dời chỗ các phần tử từ a[pos] đến a[i-1] sang phải 1 vị trí để dành
chổ cho a[i]
-Bước 4: a[pos] = x;
-Bước 5: i = i+1;
là phương pháp sắp xếp nào?
Chèn trực tiếp (Insertion Sort))
Giải thuật sắp xếp sau đây:
-Bước 1 : i = 1;
-Bước 2 : j = i+1;
-Bước 3 :
Trong khi j <= N thực hiện
Nếu a[j]<a[i]: a[i]↔a[j];
j = j+1;
-Bước 4 :
i = i+1;
Nếu i < n: Lặp lại Bước 2 Ngược lại: Dừng
là phương pháp sắp xếp nào?
Đổi chỗ trực tiếp (Interchange Sort)
Hàm fgetc() trả về kết quả EOF khi nào? Khi đọc đến cuối tập tin hoặc
không thể đọc được ký tự Hàm nào sau đây được sử dụng để đóng tất cả các tập tin đang mở? Hàm fcloseall
Hàm Output được cài đặt:
void Output(TREE Root)
{
if (Root != NULL)
{
printf(“%d ”,Root->Key);
Output(Root->pRight);
Output(Root->pLeft);
}
}
Và cây nhị phân:
2
Trang 12Khi thực hiện hàm Output trên cây đã cho thì khóa nào được in ra màn hình sau cùng?
Hàm Output được cài đặt:
void Output(TREE Root)
{
if (Root != NULL)
{
printf(“%d ”,Root->Key);
Output(Root->pRight);
Output(Root->pLeft);
}
}
Và cây nhị phân:
Khi thực hiện hàm Output trên cây đã cho thì khóa nào được in ra màn hình sau cùng?
2
Hàm searchNode(TREE T, Data X) cho trước như sau:
TNODE* searchNode(TREE T, Data X)
{
if(T!=NULL)
{
if(T->Key == X)
return T;
if(T->Key > X) return searchNode(T->pLeft, X);
else return searchNode(T->pRight, X);
}
return NULL;
}
Và cây nhị phân tìm kiếm:
Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 19 trên cây đã cho thì hàm searchNode gọi đệ qui bao nhiêu lần?
4
Hàm searchNode(TREE T, Data X) cho trước như sau:
TNODE* searchNode(TREE T, Data X)
{
if(T!=NULL)
{
if(T->Key == X)
return T;
if(T->Key > X) return searchNode(T->pLeft, X);
else return searchNode(T->pRight, X);
}
return NULL;
}
Và cây nhị phân tìm kiếm:
4
Trang 13Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 19 trên cây đã cho thì
hàm searchNode gọi đệ qui bao nhiêu lần?
Hàm searchNode(TREE T, Data X) được cài đặt như sau:
TNODE* searchNode(TREE T, Data X)
{
if(T!=NULL)
{
if(T->Key == X)
return T;
if(T->Key > X) return searchNode(T->pLeft, X);
else return searchNode(T->pRight, X);
}
return NULL;
}
Và cây nhị phân tìm kiếm:
Hỏi hàm searchNode(TREE T, Data X) khi tìm kiếm khóa 18 trên cây đã cho thì
hàm searchNode gọi đệ qui bao nhiêu lần?
3
Hãy cho biết chiều cao của cây kết quả sau khi chèn liên tiếp các khóa: 4, 7, 9,
10, 13, 15, 16 vào B Cây bậc 3 rỗng?
2
Hãy cho biết chiều cao của cây kết quả sau khi chèn liên tiếp các khóa: 4, 7, 9,
10, 13, 15, 16 vào B Cây bậc 3 rỗng?
2
Hãy cho biết nút gốc của cây kết quả sau khi chèn liên tiếp các khóa: 4, 8, 3, 9,
15, 18 vào B Cây bậc 3 rỗng?
4, 9
int ProKey(TREE T)
{
TREE p=T;
while(p->pRight!=NULL)
p=p->pRight;
return p->Key;
}
Thực hiện hàm ProKey trên cây nhị phân sau:
thì hàm ProKey trả về giá trị:
30
int ProTree(TREE T)
{
if(T==NULL)
return 0;
else
return ProTree(T->pLeft) +ProTree(T->pRight);
}
Thực hiện hàm ProTree trên cây nhị phân sau:
thì hàm ProTree trả về giá trị:
10
Kết quả trên màn hình sau khi thực thi đoạn mã lệnh sau là gì? ABCDE