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

(SKKN HAY NHẤT) phân tích, vận dụng các thuật toán sắp xếp để giải quyết một số bài toán viết bằng NNLT c++

39 5 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

Cấu trúc

  • PHÂN TÍCH, VẬN DỤNG CÁC THUẬT TOÁN SẮP XẾP ĐỂ GIẢI QUYẾT MỘT SỐ BÀI TOÁN VIẾT BẰNG NNLT C++

  • 1. MỞ ĐẦU

    • 1.1. Lý do chọn đề tài

    • 1.2. Mục đích nghiên cứu

    • 1.3. Đối tượng nghiên cứu

    • 1.4. Phương pháp nghiên cứu

  • 2. NỘI DUNG NGHIÊN CỨU

    • 2.1. Cơ sở lý luận

    • 2.2. Thực trạng

      • 2.2.1 Thực trạng trước khi nghiên cứu

    • 2.3. Các biện pháp sử dụng để giải quyết vấn đề

      • 2.3.1. Giới thiệu về bài toán sắp xếp

        • 2.3.1.1. Khái niệm

        • 2.3.1.2. Mục đích của sắp xếp

      • 2.3.2. Một thuật toán sắp xếp cơ bản

        • 2.3.1.1. Sắp xếp nổi bọt (Bubble Sort)

        • 2.3.1.2. Sắp xếp chọn (Selection Sort)

        • 2.3.1.3. Sắp xếp chèn (Insert Sort)

        • 2.3.1.4. Thuật toán Shell Sort

        • 2.3.1.5. Sắp xếp kiểu phân đoạn (QuickSort)

        • 2.3.1.6. Sắp xếp bằng phép đếm phân phối (Counting Sort)

        • 2.3.1.7. Sắp xếp kiểu vun đống (Heap sort)

        • 2.3.1.8. Sắp xếp trộn (Merge Sort)

      • 2.3.3. Đánh giá thuật toán và những yếu tố cần quan tâm khi sử dụng thuật toán

        • 2.3.3.1. Đánh giá thuật toán

        • 2.3.3.2. Những yếu tố cần quan tâm khi sử dụng thuật toán

      • 2.3.4. Một số bài toán áp dụng

        • 2.3.4.1. Nguồn http://vn.spoj.com/proplems/NUMCON/

        • 2.3.4.2. QUÀ TẶNG

        • 2.3.4.3. Nguồn: http://vn.spoj.com/problems/INSUL/

        • 2.3.4.4. Đề thi HSG Tỉnh Nghệ An năm 2016-2017

    • 2.4. Hiệu quả của sáng kiến kinh nghiệm

  • 3. KẾT LUẬN VÀ KIẾN NGHỊ

    • 3.1. Kết luận

    • 3.2. Kiến nghị

  • TÀI LIỆU THAM KHẢO

Nội dung

SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI PHÂN TÍCH, VẬN DỤNG CÁC THUẬT TOÁN SẮP XẾP ĐỂ GIẢI QUYẾT MỘT SỐ BÀI TOÁN VIẾT BẰNG NNLT C++ SKKN thuộc lĩnh vực: Tin học Nghệ An năm 2021 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỞ ĐẦU 1.1 Lý chọn đề tài Chúng ta biết để có kết cao kì thi tuyển chọn học sinh giỏi mơn tin học nói chung phải có vốn kiến thức thuật tốn để giải tốn khó, tốn liệu vào lớn, sau học sinh lựa chọn NNLT để lập trình dựa vào thuật tốn tìm giải tốn theo u cầu Trong quá trình dạy bồi dưỡng học sinh giỏi tơi gặp rất nhiều bài toán có sử dụng giải thuật xếp Đây là dạng bài tập khơng khó học sinh thường hay chủ quan nên không chạy hết test lớn Nguyên nhân học sinh không áp dụng phương pháp phù hợp cho tốn Với mong muốn giúp học sinh giải tốt tập xếp dãy số, tơi dày cơng nghiên cứu thuật tốn xếp phân tích để áp dụng vào dạng tốn phù hợp Mặt khác, theo chương trình Bộ Giáo Dục khuyến khích giáo viên dạy NNLT thay Pascal nên tơi viết chương trình NNLT C++ để làm tài liệu tham khảo cho giáo viên học sinh Từ những lý đã mạnh dạn trình bày sáng kiến kinh nghiệm: “Phân tích, vận dụng thuật toán xếp để giải số toán viết NNLT C++” 1.2 Mục đích nghiên cứu Mục đích sáng kiến nghiên cứu, phân tích vận dụng thuật tốn xếp dành cho đối tượng HSG khối THPT Việc lĩnh hội sáng kiến giúp học sinh: - Mơ tả khái niệm, chất mục đích việc xếp - Trình bày thực cài đặt cách xác thuật tốn xếp - Đánh giá thuật toán xếp tìm thuật tốn xếp phù hợp cho toán - Giúp em học giỏi môn Tin Học đạt kết cao - Tạo nguồn tài liệu tham khảo thuật toán hỗ trợ cho học sinh, giáo viên dạy Tin học bậc THPT - Sử dụng NNLT C++ chương trình giáo dục phổ thông LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 1.3 Đối tượng nghiên cứu Sáng kiến kinh nghiệm có đới tượng nghiên cứu là các thuật tốn xếp viết số chương trình có sử dụng thuật toán xếp NNLT C++ 1.4 Phương pháp nghiên cứu Để trình bày sáng kiến kinh nghiệm này, đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, thuyết trình, quan sát, điều tra bản, thực nghiệm so sánh, phân tích kết quả thực nghiệm, vận dụng… phù hợp với môn học thuộc lĩnh vực Tin học LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com NỘI DUNG NGHIÊN CỨU 2.1 Cơ sở lý luận Nếu học sinh thực hiện tốt việc lựa chọn cài đặt chương trình tới ưu giải các bài tốn xếp nói riêng tập lập trình nói chung thì chất lượng học sinh giỏi nâng cao Học sinh dần làm quen với NNLT C++ 2.2 Thực trạng 2.2.1 Thực trạng trước nghiên cứu Đối với thi học sinh giỏi, dù kết output thí sinh có giống hệt với input, việc chênh lệch thời gian định thí sinh chiến thắng hay thất bại (u cầu thời gian xử lí chương trình khơng q giây/1 test) Lý vận dụng thuật tốn thường học sinh chọn thuật tốn quen thuộc mà phân tích tốn để tìm thuật tốn phù hợp Vấn đề đặt ra, là làm thế nào để lấy được điểm với các input có dữ liệu lớn Muốn cần phải lựa chọn cài đặt chương trình hiệu (tối ưu) Chương trình hiệu chương trình giải input có liệu lớn, xác, dung lượng sử dụng nhớ nhỏ, thời gian thực chương trình ngắn, 2.3 Các biện pháp sử dụng để giải vấn đề 2.3.1 Giới thiệu toán xếp 2.3.1.1 Khái niệm Sắp xếp trình xử lý danh sách phần tử (hoặc mẫu tin) để đặt chúng theo thứ tự, thỏa mãn tiêu chuẩn dựa nội dung thông tin lưu trữ phần tử Ví dụ: cho trước dãy số a1, a2, , an lưu trữ cấu trúc liệu mảng Sắp xếp dãy số a1, a2, , an thực việc bố trí lại phần tử cho dãy có thứ tự tăng dần (hoặc giảm dần) Hai thao tác so sánh gán thao tác hầu hết thuật toán xếp Bài toán xếp xuất lĩnh vực tin học Khi xây dựng tốn xếp, cần tìm cách giảm thiểu phép so sánh đổi chỗ không cần thiết để tăng hiệu thuật toán Trong đề tài giới thiệu số giải thuật xếp từ đơn giản đến phức tạp áp dụng thích hợp cho việc xếp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 2.3.1.2 Mục đích xếp Mục đích việc xếp giúp có nhìn tổng quan liệu mà ta có, dễ dàng tìm kiếm phần tử đứng thứ tiêu chí 2.3.2 Một thuật tốn xếp 2.3.1.1 Sắp xếp bọt (Bubble Sort) 2.3.1.1.1 Ý tưởng thuật toán Sắp xếp bọt thuật toán đơn giản nhất, ý tưởng thuật toán sau: Duyệt qua danh sách, làm cho phần tử lớn nhỏ cuối danh sách, tiếp tục làm phần tử lớn nhỏ cận kề dịch chuyển cuối hết danh sách 2.3.1.1.2 Nội dung cài đặt chương trình Các bước thực giải thuật: Gán i Gán j Nếu A[j] > A[j+1] đổi chỗ A[j] A[j+1] Nếu j < n-j-1: 4.1: Đúng j=j+1 quay lại bước 4.2: Sai sang bước 5 Nếu i < n-1: 5.1: Đúng i=i+1 quay lại Bước 5.2: Sai dừng lại Cài đặt C++: #include #include #include using namespace std; int a[100001]; int n,tg; int main() { clock_t begin=clock(); LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ifstream fi("bubble.inp"); ofstream fo("bubble.out"); fi>>n; for (int i=0;i>a[i]; for (int i=0;i

Ngày đăng: 02/11/2022, 15:10

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

TÀI LIỆU LIÊN QUAN

w