Soạn mới giáo án Khoa học máy tính 11 cánh diều Chủ đề F(CS) Bài 9: Lập trình thuật toán sắp xếp nhanh

Soạn mới Giáo án khoa học máy tính 11 cánh diều bài Lập trình thuật toán sắp xếp nhanh. Đây là bài soạn mới nhất theo mẫu công văn 5512. Giáo án soạn chi tiết, đầy đủ, trình bày khoa học. Tài liệu có bản word tải về. Hi vọng đây sẽ là tài liệu hữu ích để thầy cô tham khảo và nâng cao chất lượng giảng dạy. Mời thầy cô và các bạn kéo xuống tham khảo

Cùng hệ thống với: Kenhgiaovien.com - tech12h.com - Zalo hỗ trợ: Fidutech - nhấn vào đây

Rõ nét về file powerpoint trình chiếu. => Xem thêm

Ngày soạn:…/…/…

Ngày dạy:…/…/…

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

  1. MỤC TIÊU
  2. Về kiến thức

Sau bài học này, HS sẽ:

  • Hiểu được ý tưởng của thuật toán sắp xếp nhanh.
  • Viết được chương trình thực hiện sắp xếp nhanh một dãy số dựa trên các mã lệnh thuật toán phân đoạn cho trước.
  1. Năng lực

Năng lực chung:

  • Năng lực tự chủ: Biết lựa chọn các nguồn tài liệu học tập phù hợp.
  • Năng lực giải quyết vấn đề và sáng tạo: Xác định và tìm hiểu được các thông tin liên quan đến vấn đề, đề xuất giải pháp giải quyết vấn đề trong bài học.
  • Năng lực giao tiếp và hợp tác: Thực hiện tốt nhiệm vụ trong hoạt động nhóm.

Năng lực tin học:

  • Hình thành, phát triển năng lực tin học giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học.
  • Khả năng tư duy logic và mô hình hóa.
  1. Phẩm chất
  • Hình thành ý thức trách nhiệm, tính cẩn thận, chăm chỉ trong học tập và công việc.
  • Có ý thức vận dụng kiến thức, kĩ năng đã học ở nhà trường vào thực tiễn.
  1. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU
  2. Đối với giáo viên
  • SGK, SGV, Giáo án;
  • Máy tính và máy chiếu;
  • Tài liệu hướng dẫn sử dụng máy tính (tivi, điện thoại,...) (nếu có).
  1. Đối với học sinh: SGK, SBT, vở ghi.

III. TIẾN TRÌNH DẠY HỌC

  1. HOẠT ĐỘNG KHỞI ĐỘNG
  2. Mục tiêu: Tạo tâm thế vui vẻ, hứng khởi cho HS trước khi vào bài học mới; kích thích sự tò mò cho người học.
  3. Nội dung: GV giao nhiệm vụ; HS trả lời câu hỏi Khởi động SGK trang 127.
  4. Sản phẩm học tập: Câu trả lời của HS cho câu hỏi Khởi động SGK trang 127.
  5. Tổ chức thực hiện:

Bước 1: GV chuyển giao nhiệm vụ học tập

- GV đặt vấn đề, yêu cầu HS trả lời câu hỏi Khởi động tr.127 SGK:

          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.

Bước 2: HS thực hiện nhiệm vụ học tập

- HS lắng nghe, suy nghĩ và đưa ra câu trả lời dựa trên những hiểu biết của bản thân.

- GV gợi ý, dẫn dắt HS: Câu hỏi đề cập đến lựa chọn bài toán xuôi hay bài toán ngược. Thường thi bài toán ngược khó hơn khi mà thuật toán cuối cùng đã qua các bước cải tiến, trở nên tinh tế trong các chi tiết, rất khó hiểu ý tưởng chính là gì. Chỉ với thuật toán thô, dựa trên ý tưởng ban đầu đơn giản thì bài toán ngược không khó hơn bài toán xuôi.

Bước 3: Báo cáo kết quả hoạt động và thảo luận

- GV mời 2 - 3 HS trả lời câu hỏi.

- GV ghi nhận tất cả các câu trả lời của HS.

Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập

- GV nhận xét, đánh giá, dẫn dắt vào nội dung bài mới: - Bài 9. Lập trình thuật toán sắp xếp nhanh.

  1. HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC

Hoạt động 1: Lược đồ phân đoạn trong sắp xếp nhanh

  1. Mục tiêu: Hiểu được ý tưởng của thuật toán sắp xếp nhanh.
  2. Nội dung: GV nêu nhiệm vụ; HS hoạt động nhóm đôi, đọc hiểu mục 1, quan sát Hình 1 SGK trang 127 và thực hiện hiện nhiệm vụ.
  3. Sản phẩm học tập: Lược đồ phân đoạn trong sắp xếp nhanh.
  4. Tổ chức hoạt động:

HOẠT ĐỘNG CỦA GV - HS

DỰ KIẾN SẢN PHẨM

Bước 1: GV chuyển giao nhiệm vụ học tập

- GV chia lớp thành các nhóm đôi.

- GV yêu cầu các nhóm HS đọc hiểu mục 1, quan sát Hình 1 tr.127 SGK và trả lời các câu hỏi sau:

+ Trình bày về thuật toán sắp xếp nhanh (Quick Sort).

+ Quan sát Hình 1, hãy mô tả lược đồ phân đoạn dãy số.

Bước 2: HS thực hiện nhiệm vụ học tập

- Nhóm HS đọc hiểu mục 1, quan sát Hình 1 tr.127, thảo luận trả lời câu hỏi.

- GV hướng dẫn, theo dõi, hỗ trợ HS khi cần.

Bước 3: Báo cáo kết quả hoạt động và thảo luận

- GV mời 1 - 2 nhóm HS trả lời câu hỏi.

- HS nhóm khác lắng nghe, nhận xét, bổ sung.

Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập

- GV nhận xét câu trả lời của HS.

- GV nhấn mạnh: Thuật toán sắp xếp nhanh có thể sử dụng bất cứ lược đồ phân đoạn nào miễn là đáp ứng yêu cầu kết quả đầu ra là:

+ Chia dãy làm hai nửa, nửa bên trái chỉ gồm các phần tử nhỏ hơn hay bằng pivot; nửa bên phải chỉ gồm các phần tử lớn hơn hay bằng pivot.

+ Trả về vị trí của pivot, điểm phân tách dãy thành hai đoạn như trên.

- GV kết luận và yêu cầu HS ghi chép đầy đủ vào vở.

1. Lược đồ phân đoạn trong sắp xếp nhanh

Thuật toán sắp xếp nhanh (Quick Sort)

- Thuật toán theo chiến lược chia để trị, lặp lại nhiều lần việc phân đoạn dãy đầu vào thành hai đoạn con.

Lược đồ phân đoạn dãy số

- Lấy giá trị của một phần từ trong dãy làm pivot (giá trị chốt). Giá trị pivot có thể là bất cứ phần tử nào trong dãy.

- Kết quả phân đoạn:

+ Đoạn con ở nửa dãy bên trái chỉ gồm các phần tử nhỏ hơn hay bằng pivot.

+ Đoạn con ở nửa dãy bên phải chỉ gồm các phần tử lớn hơn hay bằng pivot.

+ Phần tử làm pivot được chuyển đến vị trí phân tách hai đoạn.

Hình 1. Kết quả phân đoạn: đoạn trái = {i|lo ≤ i ≤ p – 1}, đoạn phải = {j|p + 1 ≤ i ≤ hi}

- Hàm thực hiện phân đoạn cần trả về vị trí phân tách dãy thành hai đoạn con vì sau đó sẽ sắp xếp chỉ trong nội bộ hai đoạn con.

 

 

Hoạt động 2: Thuật toán sắp xếp nhanh áp dụng phân đoạn Lomuto

  1. Mục tiêu: Hiểu được ý tưởng của thuật toán sắp xếp nhanh.
  2. Nội dung: GV nêu nhiệm vụ; HS đọc hiểu mục 2, quan sát Hình 2, 3 SGK trang 128 và thực hiện nhiệm vụ được giao.
  3. Sản phẩm học tập: Thuật toán sắp xếp nhanh áp dụng phân đoạn Lomuto.
  4. Tổ chức hoạt động:

HOẠT ĐỘNG CỦA GV - HS

DỰ KIẾN SẢN PHẨM

Bước 1: GV chuyển giao nhiệm vụ học tập

- GV yêu cầu các HS đọc hiểu mục 2, quan sát Hình 2, 3, kết hợp với kiến thức vừa tìm hiểu ở mục 1, thảo luận nhóm đôi trả lời câu hỏi Hoạt động SGK tr.128:

Em hãy cho biết lược đồ phân đoạn Lomuto theo mã giả trong Hình 2 có đáp ứng yêu cầu phân đoạn để sắp xếp nhanh như trình bày ở mục 1 hay không.

- Trên cơ sở đó, GV yêu cầu các nhóm mô tả diễn biến từng bước thực hiện phân đoạn Lomuto.

- GV yêu cầu các nhóm tính số phép toán sơ cấp thực hiện phân đoạn Lomuto cho trường hợp dãy tăng dần.

- GV có thể thay đổi giá trị của số ở đầu dãy và cuối dãy để minh họa dịch chuyển pivot.

Bước 2: HS thực hiện nhiệm vụ học tập

- HS đọc hiểu mục 2, quan sát Hình 2, 3 kết hợp kiến thức đã học để thực hiện nhiệm vụ.

- GV theo dõi, hỗ trợ HS trong quá trình học tập.

Bước 3: Báo cáo kết quả hoạt động và thảo luận

- GV mời một số HS báo cáo kết quả thảo luận.

- Các HS còn lại nhận xét, bổ sung (nếu có).

Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập

- GV nhận xét kết quả trả lời của HS.

- GV tổng quát kiến thức và yêu cầu HS ghi chép đầy đủ vào vở.

2. Thuật toán sắp xếp nhanh áp dụng phân đoạn Lomuto

- Mã giả của thuật toán Lomuto phân đoạn dãy số a, trong đó:

lo là chỉ số đầu mút trái

hi là chỉ số đầu mút phải

- Ý tưởng của thuật toán Lomuto: Chọn pivot là giá trị phần tử đứng cuối dãy số.

+ Duy trì chỉ số i ở vị trí phân tách;

+ Duyệt dãy số bằng một chỉ số j khác và đảo giá trị các phần tử sao cho các phần tử từ vị trí i – 1 về đầu mút trái nhỏ hơn hay bằng pivot; các phần tử từ vị trí i + 1 đến j lớn hơn pivot, riêng phần tử ở vị trí i đúng bằng pivot.

- Mã lệnh Python thực hiện sắp xếp nhanh bằng phân đoạn Lomuto:

 

Hoạt động 3: Thuật toán sắp xếp nhanh áp dụng phân đoạn Hoare

  1. Mục tiêu: Hiểu được ý tưởng của thuật toán sắp xếp nhanh.
  2. Nội dung: GV nêu nhiệm vụ; HS đọc hiểu mục 3, quan sát Hình 3, 4 SGK trang 129, kết hợp với kiến thức đã học để thực hiện nhiệm vụ.
  3. Sản phẩm học tập: Thuật toán sắp xếp nhanh áp dụng phân đoạn Hoare.
  4. Tổ chức hoạt động:

HOẠT ĐỘNG CỦA GV - HS

DỰ KIẾN SẢN PHẨM

Bước 1: GV chuyển giao nhiệm vụ học tập

- GV đặt vấn đề, giới thiệu về tác giả Hoare của thuật toán sắp xếp nhanh:

Charles Antony Richard Hoare (Tony Hoare) - Nhà Khoa học máy tính

- GV yêu cầu HS tiếp tục hoạt động nhóm đôi, đọc hiểu mục 3, quan sát Hình 4, 5 SGK tr.129, kết hợp với kiến thức đã học, thảo luận trả lời các câu hỏi sau:

+ Ý tưởng chính của thuật toán sắp xếp nhanh áp dụng phân đoạn Hoare là gì?

+ Trình bày mã giả thực hiện phân đoạn Hoare và mã lệnh Python tương ứng.

Bước 2: HS thực hiện nhiệm vụ học tập

- HS đọc và tìm hiểu nhiệm vụ mục 3 quan sát Hình 4,5 SGK trang 129, thực hiện nhiệm vụ được giao.

- GV hướng dẫn, theo dõi, hỗ trợ HS khi cần.

Bước 3: Báo cáo kết quả hoạt động và thảo luận

- GV mời một số nhóm trình bày kết quả thảo luận.

- GV mời HS nhóm khác nhận xét, bổ sung.

Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập

- GV nhận xét kết quả thảo luận của HS, thái độ làm việc của HS trong nhóm.

- GV kết luận và yêu cầu HS ghi chép đầy đủ vào vở.

3. Thuật toán sắp xếp nhanh áp dụng phân đoạn Hoare

Lược đồ phân đoạn Hoare

- Ý tưởng của thuật toán:

+ Đổi chỗ nhảy qua điểm phân tách (pivot), rà soát từ hai phía, trái và phải, cùng tiến dần từng bước vào giữa.

+ Tạm dừng khi phát hiện phần tử vi phạm yêu cầu phân đoạn ở mỗi phía và đổi chỗ chúng cho nhau.

+ Rà soát từ hai điểm tạm dừng đi vào giữa cho đến khi gặp nhau thì kết thúc việc phân đoạn.

+ Điểm gặp nhau là vị trí phân tách dãy thành hai đoạn con.

- Mã giả của thuật toán sắp xếp nanh áp dụng phân đoạn Hoare:

- Mã lệnh Python của thuật toán phân đoạn dãy số a, xuất phát với pivot là đầu dãy.

 

 

Hoạt động 4: Thực hành

  1. Mục tiêu: Viết được chương trình thực hiện sắp xếp nhanh một dãy số dựa trên các mã lệnh thuật toán phân đoạn cho trước .
  2. Nội dung: GV giao nhiệm vụ; HS đọc hiểu thông tin nhiệm vụ mục 4 SGK trang 130, thực hành nhiệm vụ.
  3. Sản phẩm học tập: Sản phẩm thực hành của HS.
  4. Tổ chức hoạt động:

HOẠT ĐỘNG CỦA GV - HS

DỰ KIẾN SẢN PHẨM

Bước 1: GV chuyển giao nhiệm vụ học tập

- GV nêu các nhiệm vụ, yêu cầu HS hoạt động nhóm (3 - 4 HS) thực hiện nhiệm vụ:

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.

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

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

Bước 2: HS thực hiện nhiệm vụ học tập

- HS vận dụng kiến thức đã học, thực hành nhiệm vụ tr.130 SGK.

- GV hướng dẫn, theo dõi, hỗ trợ HS khi cần.

Bước 3: Báo cáo kết quả hoạt động và thảo luận

- Các nhóm báo cáo kết quả thực hành.

- GV mời HS nhóm khác nhận xét, bổ sung.

Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập

- GV nhận xét kết quả thảo luận của HS, thái độ làm việc của HS trong nhóm.

- GV kết luận và yêu cầu HS ghi chép đầy đủ vào vở.

4. Thực hành

Đính kèm dưới Hoạt động 4.

Kết luận:

- Thuật toán sắp xếp nhanh có thể áp dụng một trong hai lược đồ phân đoạn: theo Lomuto hoặc theo Hoare.

- Lược đồ Lomuto thực hiện phân đoạn bằng cách kiểm tra theo một chiều từ trái sang phải đổi chỗ và dịch chuyển dần vị trí phân tách hai dãy con cho đến khi thỏa mãn yêu cầu phân đoạn.

- Lược đồ Hoare thực hiện phân đoạn bằng cách kiểm tra theo hai chiều, từ hai đầu dây số tiến dần vào giữa, đổi chỗ để thoả mãn yêu cầu phân đoạn; kết thúc khi gặp nhau.

 

 

 

Nhiệm vụ 1:

def phandoanLomuto(a, lo, hi):

    i = (lo-1)                       #i là vị trí phân tách

    pivot = a[hi]

    for j in range(lo,hi ):          #Duyệt dãy a[lo...hi]

        if a[j] <= pivot:            #Phần tử a[j] <= pivot

            i = i+1                  #Tăng i lên

            a[i], a[j] = a[j], a[i]     #Đảo giá trị a[i], a[j]

    a[i+1], a[hi] = a[hi], a[i+1]      #Đảo giá trị a[i+1], a[hi]

    return (i+1)                     #Hết vòng lặp, i là vị trí phân đoạn

                                     #a[i] = pivot

def quickSort(a, lo, hi):

    if lo < hi:

        p = phandoanLomuto(a, lo, hi #p là vị trí phân tách

                                     #a[p] đã ở đúng chỗ

        quickSort(a, lo, p-1)        #Sắp xếp đoạn bên trái

        quickSort(a, p+1, hi)        #Sắp xếp đoạn bên phải

  

data = [8, 7, 2, 1, 0, 9, 6]

print("Dãy ban đầu a:")

print(data)

size = len(data)

quickSort(data, 0, size - 1)

print('Dãy được sắp xếp:')

print(data)

Nhiệm vụ 2:

def partitionHoare(a, lo, hi):

    pivot = a[lo]

    i, j = lo, hi

    phanDoan = True

    while phanDoan:              #Đang phân đoạn

        #i qua phải đến khi a[i] >= pivot

        while a[i] < pivot:

            i = i + 1

        #j qua trái đến khi a[j] <= pivot

        while a[j] > pivot:

            j = j - 1

        if i < j:                   #i chưa gặp j  

        #Hoán đổi a[i] với a[j]

            a[i], a[j] = a[j], a[i]

            i = i + 1               # i qua phải

            j = j - 1               #j qua trái

        else:

            phanDoan = False        #Kết thúc phân đoạn

    return j

def quickSortHoare(a, lo, hi):

    if lo < hi:

        p = partitionHoare(a, lo, hi)

        quickSortHoare(a, lo, p)

        quickSortHoare(a, p+1, hi)

data = [8, 7, 2, 1, 0, 9, 6]

print("Dãy ban đầu a:")

print(data)

size = len(data)

quickSortHoare(data, 0, size - 1)

print('Dãy được sắp xếp:')

print(data)

Soạn mới giáo án Khoa học máy tính 11 cánh diều Chủ đề F(CS) Bài 9: Lập trình thuật toán sắp xếp nhanh

TẢI GIÁO ÁN WORD BẢN ĐẦY ĐỦ:

  • Font chữ: Time New Roman, trình bày rõ ràng, khoa học.
  • Giáo án tải về là giáo án bản word, dễ dàng chỉnh sửa nếu muốn
  • Tất cả các bài đều soạn đầy đủ nội dung và theo đúng mẫu ở trên

THỜI GIAN BÀN GIAO GIÁO ÁN:

  • Nhận đủ cả năm ngay và luôn

PHÍ GIÁO ÁN:

  • Phí giáo án: 300k/kì - 350k/cả năm

=> Tặng kèm nhiều tài liệu tham khảo khi mua giáo án:

  • Đề thi 
  • Trắc nghiệm

CÁCH ĐẶT: 

  • Bước 1: gửi phí vào tk: 10711017 - Chu Văn Trí - Ngân hàng ACB (QR)
  • Bước 2: Nhắn tin tới Zalo Fidutech - nhấn vào đây để thông báo và nhận giáo án

Từ khóa tìm kiếm: giáo án khoa học máy tính 11 cánh diều mới, soạn giáo án khoa học máy tính 11 cánh diều bài Lập trình thuật toán sắp xếp nhanh, giáo án khoa học máy tính 11 cánh diều

Soạn giáo án khoa học máy tính 11 cánh diều


Đia chỉ: Tòa nhà TH Office, 90 Khuất Duy Tiến, Thanh Xuân, Hà Nội
Điện thoại hỗ trợ: Fidutech - click vào đây
Chúng tôi trên Yotube
Cùng hệ thống: baivan.net - Kenhgiaovien.com - tech12h.com

Chat hỗ trợ
Chat ngay