Bài 5: Thực hành tổng hợp ứng dụng chia để trị - Chuyên đề Tin học 11 Cánh diềuÁp dụng trực tiếp thuật toán sắp xếp trộn ở trên để mô tả chi tiết phương pháp chia để trị giải bài toán đếm số lượng nghịch thế ở trên.Tổ♉ng hợp đề thi học kì 2 lớp 11 tất cả cá𓄧c môn - Cánh diều Toán - Văn - Anh - Lí - Hóa - SinhQuảng cáo
Lựa chọn câu để xem lời giải nhanh hơn
Câu 1 Trả lời thực hành1 trang 47 Chuyên đề Tin học 11 Cánh diều Lời giải chi tiết: Khi chia mảng A thành hai mảng con T và P, số lượng nghịch thế từ những cặp phần tử mà một phần tử thuộc mảng T và một phần tử thuộc mảng P sẽ không thay đổi nếu ta sắp xếp các phần tử trong từng mảng T và P tăng dần. Nhận xét này giúp cho chúng ta có thể áp dụng trực tiếp các bước của thuật toán sắp xếp trộn ở trên như sau: 1. Chia: Sử dụng thuật toán chia của hàm Merge_sort(A). 2. Trị: Gọi đệ quy hàm Merge_sort(T)và Merge_sort(P) để giải từng bài toán con, đồng thời cập nhật kết quả đếm số lượng nghịch thế từng bài toán con vào một biến đếm. 3. Kết hợp: Sử dụng thuật toán trộn của hàm Merge(A), đồng thời cập nhật số lượng nghịch thế từ những cặp phần tử mà một phần tử thuộc mảng T và một phần tử thuộc mảng P, các phần tử trong hai mảng này đều đã được sắp xếp tăng dần. Gợi ý: Trong hàm Merge(A), mỗi khi xảy ra điều kiện T[i]>P[j], nghĩa là các phần tử từ T[i+1] đến phần tử cuối cùng của mảng T đều lớn hơn P[j], số lượng nghịch thế cần được cập nhật thêm là len (T) −i, với len (T) là số lượng phần tử của mảng T. Em hãy mô tả chi tiết kết quả từng bước trong các hướng dẫn 1, 2, 3 trên cho một trường hợp mảng số cụ thể, ví dụ thực hành trên mảng gồm 7 số có các giá trị lần lượt là 9, 44, 7, 2, 8, 17, 31.Câu 2 Trả lời thực hành 2 trang 47 Chuyên đề Tin học 11 Cánh diều Viết chương trình nhập vào một số nguyên dương n và n giá trị A0,A1,…,An-1 đôi mộ🌞🦩t khác nhau, đưa ra số lượng nghịch thế của mảng vừa nhập vào. Lời giải chi tiết: Hướng dẫn: Sử dụng chương trình thuật toán sắp xếp trộn trong Bài 4 và phần𒀰 hướng dẫn thuật toán trong Thực hành 1 để hoàn thiện chương trì🍌nh cho bài toán này. Kiểm thử chương trình: Em hãy nhập vào một số ví dụ mảng đầu vào và đưa ra kết quả để kiểm thử chương trình có cho kết quả đúng hay không. Nếu kết quả kiểm thử trên một số bộ dữ liệu bị sai thì in ra các giá trị trung gian trong chương trình để quan sát sự thay đổi theo từng bước của thuật toán. Em hãy tạo một mảng đầu vào có kích thước lớn (n khoảng 1 triệu phần tử) và được sắp xếp giảm dần. Từ đó thử chạy chương trình với mảng đầu vào đó. Bảng 1 là một số ví dụ thử nghiệm, em hãy tự tạo các ví dụ thử nghiệm khác.Câu 3 Trả lời thực hành 3 trang 48 Chuyên đề Tin học 11 Cánh diều Lời giải chi tiết: Bước 1. Cài đặt thuật toán đơn giản sử dụng hai vòng lặp lồng nhau duyệt qua tất cả các cặp hai phần tử của mảng dãy số để kiểm tra xem từng cặp hai phần tử có phải là nghịch thế hay không. Đồng thời thêm các biến đếm đặt trong vòng lặp thứ để tính số bước thực hiện của chương trình. Bước 2. Bổ sung các biến đếm vào vị trí thích hợp trong hàm đệ quy của chương trình trong bài Thực hành 2 để tính số bước thực hiện của chương trình.Vận dụng Trả lời câu hỏi Vận dụng trang 48 Chuyên đề Tin học 11 Cánh diều Cho một mảng A gồm n phần tử A0, A1,...An-1, hai phân tử bất kì có thể bằng nhau. Hãy ✱tính số lượng những c♓ặp hai phân tử mà không phải là nghịch thể trong mảng. a) Vận dụng bài Thực hành 1 ở trên để mô tả chi tiết phương pháp chia để trị cho bài toán này.b) Viết chương trình nhập vào giá trị n và n giá trị A0, A1, ..., An-1, đưa ra số lượng các cặp không p🔯hải là nghịch thể trong mảng A. c) Tạo các bộ dữ liệu thử nghiệm để kiểm thử chương trình.Lời giải chi tiết: a) Hướng dẫn: Sử dụng chương t🦄rình thuật toán sắp xếp trộn trong Bài 4 và p🐻hần hướng dẫn thuật toán trong Thực hành 1 đề hoàn thiện chương trình cho bài toán này. Kiểm thử chương trình: Em hãy nhập vào một số ví dụ mảng đầu vào và đưa ra kết quả để kiểm thử chương trình có cho kết quả đúng hay không. Nếu kết quả kiểm thử trên một số bộ dữ liệu bị sai thì in ra các giá trị trung gian trong chương trình để quan sát sự thay đổi theo từng bước của thuật toán. Em hãy tạo một mảng đầu vào có kích thước lớn (khoảng 1 triệu phần tử) và được sắp xếp giảm dần. Từ đó thử chạy chương trình với mảng đầu vào đó. b) void nhap(int a[], int &n);void interchangesort(int a[], int n);
Quảng cáo
Tham Gia Group Dành Cho Lớp 11 Chia Sẻ, Trao Đổi Tài Liệu Miễn Phí |