Giải ngắn gọn Tin học 11 định hướng KHMT cánh diều bài 9: Lập trình thuật toán sắp xếp nhanh
Giải siêu ngắn bài 9: Lập trình thuật toán sắp xếp nhanh sách tin học 11 định hướng Khoa học máy tính cánh diều. Với câu từ ngắn gọn, ý tứ xúc tích, dễ hiểu, học sinh nhanh chóng nắm bắt các ý chính của bài, giúp nhớ nhanh và nhớ lâu. Từ đó, việc chinh phục kiến thức trở nên dễ hơn bao giờ hết.
Nếu chưa hiểu - hãy xem: => Lời giải chi tiết ở đây
KHỞI ĐỘNG
Câu 1: Nếu cần chọn một trong hai việc sau đây, em sẽ chọn làm việc nào? Vì sao?
1) Từ mô tả thuật toán bằng liệt kê các bước, viết chương trình Python thực hiện thuật toán.
2) Từ chương trình Python thực hiện thuật toán, viết lại ngắn gọn ý tưởng chính của thuật toán.
Trả lời:
Nếu mục tiêu của em là thực hiện một thuật toán cụ thể và xây dựng một chương trình Python thực hiện nó, thì em nên chọn làm việc này. Viết chương trình Python từ mô tả thuật toán sẽ giúp em nắm vững cách thực hiện thuật toán, hiểu rõ logic và cách hoạt động của nó. Điều này có ích khi em cần phải thực hiện thuật toán trong thực tế và muốn kiểm tra chính xác cách mà thuật toán hoạt động.
THỰC HÀNH
Nhiệm vụ 1: Viết chương trình thực hiện sắp xếp nhanh một dãy số và chạy thử kiểm tra.
a) Dựa trên mã lệnh thuật toán cho trong Hình 3 trang 128.
b) Dựa trên mã lệnh thuật toán cho trong Hình 5 trang 129.
Trả lời:
a) Viết chương trình thực hiện sắp xếp nhanh một dãy số dựa trên mã lệnh thuật toán cho trong Hình 3 và chạy thử kiểm tra.
b) Viết chương trình thực hiện sắp xếp nhanh một dãy số dựa trên mã lệnh thuật toán cho trong Hình 5 và chạy thử kiểm tra.
Nhiệm vụ 2: Bổ sung thêm các câu lệnh in kết quả trung gian vào các chương trình nói trên để có thể quan sát diễn biến từng bước thực hiện sắp xếp nhanh một dãy số.
Trả lời:
- Câu lệnh bổ sung: câu lệnh in ra màn hình: print(".....")
- Các bước thực hiện:
Phân tích bài toán
Độ phức tạp thuật toán
VẬN DỤNG
Câu 1: Em hãy thực hiện các công việc sau:
a) Sửa lại thủ tục phân đoạn để có hàm quickSort_ down sắp xếp theo thứ tự giảm dần.
Gợi ý. Sửa đối phép so sánh trong câu lệnh 1f a[3] <= pivot: thành 1f a[3]} >= pivot:
b) Tiếp tục sửa lại để có hàm quickSort_tuple down sắp xếp danh sách các cặp. ví dụ (tên học sinh, điểm môn học) theo điểm môn học giảm dần.
Gợi ý: Sửa đổi đầu vào thành danh sách các cặp (tên học sinh, điểm môn học) và thực hiện so sánh theo điểm môn học.
Trả lời:
a) Gợi ý sửa lại thủ tục phân đoạn để có hàm quickSort_down sắp xếp theo thứ tự giảm dần:
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void bubblesort(int arr[],int n){
for(int i=0; i<n-1; i++){
for(int j=0; j<n-i-1; j++){
if(arr[j]>arr[j+1]){
swap(&arr[j],&arr[j+1]);
}
}
}
}
b) Gợi ý tiếp tục sửa lại để có hàm quickSort_tuple down sắp xếp danh sách
các cặp. ví dụ (tên học sinh, điểm môn học) theo điểm môn học giảm dần:
void quickSort(int a[], int l, int r){
int p = a[(l+r)/2];
int i = l, j = r;
while (i < j){
while (a[i] < p){
i++;
}
while (a[j] > p){
j--;
}
if (i <= j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if (i < r){
quickSort(a, i, r);
}
if (l < j){
quickSort(a, l, j);
}
}
CÂU HỎI TỰ KIỂM TRA
Câu 1: Em hãy giải thích tại sao lại nói thuật toán sắp xếp nhanh (QuickSort) theo chiến lược “chia để trị”.
Trả lời:
- Thuật toán QuickSort thực hiện việc sắp xếp dãy số bằng cách áp dụng chiến lược "chia để trị", tức là nó tách dãy số ban đầu thành các phần nhỏ hơn, sau đó sắp xếp từng phần này, và sau cùng kết hợp các phần đã sắp xếp để tạo ra dãy số đã được sắp xếp.
- Cụ thể, thuật toán QuickSort chia dãy số ban đầu thành hai phần dựa trên một phần tử gọi là pivot. Các phần tử nhỏ hơn pivot được di chuyển vào bên trái pivot, trong khi các phần tử lớn hơn pivot được đưa vào bên phải pivot. Tiếp theo, thuật toán được áp dụng đệ quy lên từng phần con của dãy số này cho đến khi các phần con chỉ chứa một phần tử duy nhất. Cuối cùng, các phần đã sắp xếp lại được kết hợp với nhau để tạo ra dãy số đã được sắp xếp.
- Chiến lược "chia để trị" của QuickSort giúp giải quyết các vấn đề lớn bằng cách chia chúng thành các vấn đề nhỏ hơn, giúp tối ưu hóa quá trình sắp xếp và làm cho thuật toán trở nên hiệu quả hơn.
Câu 2: Theo em thì diễn biến từng bước sắp xếp nhanh một dãy số cụ thể dùng phân đoạn Lomuto sẽ giống hay sẽ khác với dùng phân đoạn Hoare?
Trả lời:
- Quá trình thực hiện thuật toán QuickSort trên một dãy số cụ thể sử dụng phân đoạn Lomuto sẽ có sự khác biệt so với việc sử dụng phân đoạn Hoare. Sự khác biệt này xuất phát từ việc lựa chọn pivot, cách thực hiện phân đoạn và cách sắp xếp các phần tử trong thuật toán QuickSort.
- Cụ thể, phương pháp phân đoạn Lomuto sẽ lựa chọn pivot là phần tử cuối cùng của mảng, sau đó thực hiện phân đoạn dãy số dựa trên pivot và đưa pivot về giữa hai phân đoạn tạo ra. Sau đó, thuật toán QuickSort được áp dụng đệ quy lên hai phân đoạn bên trái và bên phải của pivot. Trong khi đó, phương pháp phân đoạn Hoare sẽ lựa chọn pivot là phần tử ở giữa của mảng, sau đó sử dụng hai con trỏ xuất phát từ đầu và cuối mảng để di chuyển và phân đoạn dãy số theo pivot. Điều quan trọng là phần tử bên trái pivot phải lớn hơn pivot và phần tử bên phải pivot phải nhỏ hơn pivot. Sau đó, pivot được đưa vào vị trí mới và thuật toán QuickSort tiếp tục thực hiện trên hai phân đoạn bên trái và bên phải của pivot.
Nếu chưa hiểu - hãy xem: => Lời giải chi tiết ở đây
Nội dung quan tâm khác
Thêm kiến thức môn học
Giải bài tập những môn khác
Giải sgk lớp 11 KNTT
Giải sgk lớp 11 CTST
Giải sgk lớp 11 cánh diều
Giải SBT lớp 11 kết nối tri thức
Giải SBT lớp 11 chân trời sáng tạo
Giải SBT lớp 11 cánh diều
Giải chuyên đề học tập lớp 11 kết nối tri thức
Giải chuyên đề toán 11 kết nối tri thức
Giải chuyên đề ngữ văn 11 kết nối tri thức
Giải chuyên đề vật lí 11 kết nối tri thức
Giải chuyên đề hóa học 11 kết nối tri thức
Giải chuyên đề sinh học 11 kết nối tri thức
Giải chuyên đề kinh tế pháp luật 11 kết nối tri thức
Giải chuyên đề lịch sử 11 kết nối tri thức
Giải chuyên đề địa lí 11 kết nối tri thức
Giải chuyên đề mĩ thuật 11 kết nối tri thức
Giải chuyên đề âm nhạc 11 kết nối tri thức
Giải chuyên đề công nghệ chăn nuôi 11 kết nối tri thức
Giải chuyên đề công nghệ cơ khí 11 kết nối tri thức
Giải chuyên đề tin học 11 định hướng Khoa học máy tính kết nối tri thức
Giải chuyên đề tin học 11 định hướng Tin học ứng dụng kết nối tri thức
Giải chuyên đề quốc phòng an ninh 11 kết nối tri thức
Giải chuyên đề hoạt động trải nghiệm hướng nghiệp 11 kết nối tri thức
Giải chuyên đề học tập lớp 11 chân trời sáng tạo
Giải chuyên đề học tập lớp 11 cánh diều
Trắc nghiệm 11 Kết nối tri thức
Trắc nghiệm 11 Chân trời sáng tạo
Trắc nghiệm 11 Cánh diều
Bộ đề thi, đề kiểm tra lớp 11 kết nối tri thức
Đề thi Toán 11 Kết nối tri thức
Đề thi ngữ văn 11 Kết nối tri thức
Đề thi vật lí 11 Kết nối tri thức
Đề thi sinh học 11 Kết nối tri thức
Đề thi hóa học 11 Kết nối tri thức
Đề thi lịch sử 11 Kết nối tri thức
Đề thi địa lí 11 Kết nối tri thức
Đề thi kinh tế pháp luật 11 Kết nối tri thức
Đề thi công nghệ cơ khí 11 Kết nối tri thức
Đề thi công nghệ chăn nuôi 11 Kết nối tri thức
Đề thi tin học ứng dụng 11 Kết nối tri thức
Đề thi khoa học máy tính 11 Kết nối tri thức
Bộ đề thi, đề kiểm tra lớp 11 chân trời sáng tạo
Bộ đề thi, đề kiểm tra lớp 11 cánh diều
Đề thi Toán 11 Cánh diều
Đề thi ngữ văn 11 Cánh diều
Đề thi vật lí 11 Cánh diều
Đề thi sinh học 11 Cánh diều
Đề thi hóa học 11 Cánh diều
Đề thi lịch sử 11 Cánh diều
Đề thi địa lí 11 Cánh diều
Đề thi kinh tế pháp luật 11 Cánh diều
Đề thi công nghệ cơ khí 11 Cánh diều
Đề thi công nghệ chăn nuôi 11 Cánh diều
Đề thi tin học ứng dụng 11 Cánh diều
Đề thi khoa học máy tính 11 Cánh diều
Bình luận