5 phút giải Khoa học máy tính 11 Cánh diều trang 127

5 phút giải Khoa học máy tính 11 Cánh diều trang 127. Giúp học sinh nhanh chóng, mất ít thời gian để giải bài. Tiêu chí bài giải: nhanh, ngắn, súc tích, đủ ý. Nhằm tạo ra bài giải tốt nhất. 5 phút giải bài, bằng ngày dài học tập.


Nếu chưa hiểu - hãy xem: => Lời giải chi tiết ở đây

BÀI 9. LẬP TRÌNH THUẬT TOÁN SẮP XẾP NHANH

PHẦN I. HỆ THỐNG CÂU HỎI, BÀI TẬP TRONG SGK

KHỞI ĐỘNG

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.

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.

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ố.

VẬN DỤNG

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.

TỰ KIỂM TRA

Tự kiểm tra 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ị”.

Tự kiểm tra 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?

PHẦN II. 5 PHÚT TRẢ LỜI CÂU HỎI, BÀI TẬP SGK

KHỞI ĐỘNG

Đáp án KD

Chọn bước 1 ® dễ nắm được các bước thực hiện và giúp bài toán có phương pháp giải chính xác hơn.

THỰC HÀNH

Đáp án NV1:

a) Dựa trên mã lệnh thuật toán cho trong Hình 3.

b) Dựa trên mã lệnh thuật toán cho trong Hình 5.

Đáp án NV2:

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

Đáp án VD:

a) Gợi ý

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 ý

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);

}

}

TỰ KIỂM TRA

Đáp án TKT1:

Vì thuật toán sắp xếp nhanh phân chia dãy số cần sắp xếp thành các phần nhỏ hơn, sau đó sắp xếp từng phần và kết hợp lại thành dãy số đã được sắp xếp.

Đáp án TKT2:

Khác với dùng phân đoạn Hoare. 


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

Từ khóa tìm kiếm:

giải 5 phút Khoa học máy tính 11 Cánh diều, giải Khoa học máy tính 11 Cánh diều trang 127, giải Khoa học máy tính 11 CD trang 127

Bình luận

Giải bài tập những môn khác