1. Trang chủ
  2. » Giáo Dục - Đào Tạo

SKKN vận dụng một số thuật toán sắp xếp vào giải bài tập tin học trong bồi dưỡng học sinh giỏi

20 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 40,34 KB

Nội dung

MỤC LỤC MỞ ĐẦU 1.1 Lí chọn đề tài Trong trình dạy học trường THPT Tĩnh Gia 1, nhiều năm học nhà trường phân công giảng dạy khối 11 dạy bồi dưỡng học sinh giỏi Tôi nhận thấy để học sinh đạt kết cao việc học bồi dưỡng giáo viên đóng vai trị quan trọng việc định hướng chuyên đề hướng dẫn học sinh thực Một chuyên đề mà học sinh cần học tập rèn luyện nhiều lập trình thuật toán xếp Bước đầu học sinh lúng túng việc xác định vận dụng cho hợp lý thuật toán xếp để toán giải thuật toán tối ưu Nhằm nâng cao chất lượng dạy học môn Tin học 11, bồi dưỡng học sinh giỏi Vì tơi chọn đề tài: “Vận dụng số thuật toán xếp vào giải tập tin học bồi dưỡng học sinh giỏi” 1.2 Mục đích nghiên cứu - Nghiên cứu tổng quan mô thuật tốn - Trong phạm vi đề tài tơi muốn nghiên cứu số tập có áp dụng thuật tốn xếp, nhằm giúp học sinh hình thành kỹ tư duy, phân tích tốn áp dụng thuật tốn xếp giải toán tin học với vấn đề thường gặp lập trình 1.3 Đối tượng nghiên cứu - Học sinh giỏi lớp 11 trường THPT Tĩnh Gia - Một số toán áp dụng thuật toán xếp 1.4 Phương pháp nghiên cứu - Phương pháp nghiên cứu xây dựng sở lý thuyết - Kỹ thuật phân tích thuật tốn - Tham khảo tài liệu tài liệu mở mạng internet phân tích có hệ thống dạng tập theo nội dung đề NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận 2.1.1 Thuật toán xếp bọt (bubble sort) Ví dụ tốn: Cho dãy A gồm có N phần tử a 1,a2,…an Hãy xếp dãy A thành dãy không giảm Ý tưởng thuật tốn: Là tìm đổi chỗ cặp phần tử kề chưa thứ tự Có thể tiến hành từ bên trái sang từ bên phải sang không tồn cặp sai thứ tự ( dãy xếp) Mô tả ý tưởng: - Lượt 1: Ta xét từ cuối dãy, gặp hai phần tử kề mà sai thứ tự đổi chỗ chúng cho Sau lượt 1, phần tử nhỏ thứ đưa vị trí - Lượt 2: Ta xét từ cuối dãy ( đến phần tử thứ 2), gặp phần tử kề mà sai thứ tự đổi chỗ chúng cho Sau lượt 2, phần tử nhỏ thứ hai đưa vị trí - Lượt i: Ta xét từ cuối dãy ( đến phần tử thứ i), gặp phần tử kề mà sai thứ tự đổi chỗ chúng cho Sau lượt i, phần tử có khố nhỏ thứ i đưa vị trí i - Xong lượt thứ n -1 dãy xếp xong Chương trình: Procedure boubblesort; Var i,j,tg: integer; Begin For i:=1 to n-1 For j:=n downto i+1 If a[j-1]>a[j] then Begin Tg:=a[j]; A[j]:=a[j-1]; A[j-1]:=tg; End; End; Thuật tốn có độ phức tạp: thời gian thực O(N2) [1] 2.1.2 Thuật toán xếp nhanh (quick sort) Ví dụ tốn: Cho dãy A gồm có N phần tử a 1,a2,…an Hãy xếp dãy A thành dãy không giảm Ý tưởng thuật toán: - Sắp xếp dãy coi xếp đoạn từ số đến số N - Để xếp đoạn dãy, đoạn có phần tử dãy xếp, ngược lại ta chọn phần tử x đoạn để làm chốt, phần tử nhỏ chốt xếp vào vị trí trước chốt, phần tử lớn chốt xếp vào vị trí đứng sau chốt - Sau phép hốn chuyển đoạn xét chia làm hai đoạn mà phần tử phần đầu đoạn nhỏ chốt phần tử sau đoạn lớn chốt - Tiếp tục kiểu với đoạn ta đoạn cho xếp theo chiều tăng dần Ý tưởng thuật toán mô tả cụ thể sau: Giả sử phải xếp đoạn có số từ L đến H: - Chọn x phần tử ngẫu nhiên đoạn L H ( chọn x phần tử đoạn, nghĩa x=a[(L+H) div 2]) - Cho i chạy từ L sang phải, j chạy từ H sang trái; phát cặp ngược thứ tự: i≤j a[i]≥ x≥a[j] đổi chỗ hai phần tử đó; i>j lúc dãy tình trạng: phần tử đoạn L i≤x; phần tử đoạn j H≥x - Tiếp tục xếp với đoạn L j i H Thủ tục Quicksort(L,H) sau dùng để xếp đoạn từ L tới H Để xếp dãy số ta gọi Quicksort(1,n) Procedure Quicksort (L,H:longint); Var i,j: longint; X,tg: longint; Begin i:=L; J:=H; X:=a[(L+H) div 2]; Repeat While a[i]x dec(j); Ij; If L

Ngày đăng: 09/06/2021, 13:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w