Cài đặt mô phỏng thuật toán sắp xếp chọn trực tiếp và đổi chỗ trực tiếp

60 110 0
Cài đặt mô phỏng thuật toán sắp xếp chọn trực tiếp và đổi chỗ trực tiếp

Đ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

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN MÔN HỌC ĐỀ TÀI : CÀI ĐẶT MƠ PHỎNG THUẬT TỐN SẮP XẾP CHỌN TRỰC TIẾP, ĐỔI CHỖ TRỰC TIẾP GVHD: Đào Minh Châu SVTH: Nguyễn Anh Tài Phan Thị Kim Ngân Tp.Hồ Chí Minh, Tháng 08, năm 2021 2033183007 2033188001 MỤC LỤC MỤC LỤC i DANH MỤC HÌNH ẢNH iv DANH MỤC BẢNG .vi LỜI CẢM ƠN vii LỜI MỞ ĐẦU CHƯƠNG I: TỔNG QUAN VỀ THUẬT TỐN TÌM KIẾM VÀ THUẬT TỐN SẮP XẾP 1.1 Khái qt thuật tốn tìm kiếm thuật tốn xếp: 1.2 Phân loại thuật tốn tìm kiếm: 1.2.1 Phân loại dựa theo liệu: .5 1.2.2 Phân loại theo độ phức tạp thuật toán: 1.3 Phân loại thuật toán xếp : 1.3.1 Phân loại theo độ phức tạp thuật toán: 1.3.2 Phân loại dựa theo có phải phương pháp so sánh hay khơng: 1.3.3 Phân loại dựa theo khả thích ứng: 1.3.4 Phân loại dựa theo tính ổn định thuật tốn: CHƯƠNG 2: MỘT SỐ THUẬT TỐN THƠNG DỤNG .1 2.1 Thuật toán xếp đổi chỗ trực tiếp – Interchange sort: 2.1.1 Ý tưởng thuật toán: 2.1.2 Giải thuật Interchange sort: 2.1.3 Cài đặt thuật toán Interchange sort: 2.1.4 Đánh giá thuật toán Interchange sort: .5 2.2 Thuận toán xếp chọn trực tiếp – Selection sort: .6 2.2.1 Ý tưởng thuật toán: 2.2.2 Giải thuật Selection sort: i 2.2.3 Cài đặt thuật toán Selection sort: 10 2.2.4 Đánh giá thuật toán Selection sort: .10 2.3 Thuật toán xếp nhanh – Quick sort: .11 2.3.1 Ý tưởng thuật toán Quick sort: 11 2.3.2 Giải thuật Quick sort: 12 2.3.3 Cài đặt thuật toán Quick sort: .15 2.3.4 Đánh giá thuật toán Quick sort: 16 2.4 Thuật tốn tìm kiếm tuyến tính-Linear search: 16 2.4.1 Ý tưởng thuật toán: .17 2.4.2 Giải thuật Linear search: .17 2.4.3 Cài đặt thuật toán Linear search: 19 2.4.4 Đánh giá thuật toán Linear search: 20 2.5 Thuật tốn tìm kiếm tuần tự-Binary search: 20 2.5.1 Ý tưởng thuật toán: .20 2.5.2 Giải thuật Binary search: 20 2.5.3 Cài đặt thuật toán Binary search: 22 2.5.4 Đánh giá thuật toán: 23 CHƯƠNG III: CHƯƠNG TRÌNH MINH HỌA THUẬT TỐN 24 3.1 Giới thiệu công cụ ngôn ngữ sử dụng: 24 3.1.1 Tổng quan ngơn ngữ lập trình Csharp: .24 3.2 Chương trình minh họa thuật tốn: 24 3.2.1 Mô tả chung chương trình: .25 3.2.2 Các tính chương trình: 25 3.3 Một số hình ảnh hoạt động chương trình: 25 3.3.1 Khởi tạo chương trình: 25 3.3.2 Mơ thuật tốn Sắp xếp trực tiếp (InterChange Sort): 30 ii 3.3.3 Mơ thuật tốn Sắp xếp Chọn trực tiếp (Selection Sort): .32 3.3.4 Mơ thuật tốn Sắp xếp nhanh (Quick Sort): .36 3.3.5 Mơ thuật tốn Tìm kiếm tuyến tính (Linear Search): 38 3.3.6 Mơ thuật tốn Tìm kiến nhị phân (Binary Search): 41 TÀI LIỆU THAM KHẢO 45 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 46 iii DANH MỤC HÌNH ẢNH Hình 2.1 Lưu đồ thuật toán xếp đổi chỗ trực tiếp InterChange Sort Hình 2.2 Lưu đồ thuật toán xếp đổi chỗ chọn trực tiếp Selection Sort Hình 2.3 Lưu đồ thuật toán Sắp xếp nhanh QuickSort 14 Hình 2.4 Lưu đồ thuật toán tìm kiếm tuyến tính Linear Search 18 Hình 2.5 Lưu đồ thuật toán tìm kiếm nhị phân Binary Search .21 Hình 3.1 Giao diện Chương trình Mơ thuật toán 26 Hình 3.2 Khởi tạo dãy số tự động với số lượng phần tử nhập từ bàn phím 27 Hình 3.3 Khởi tạo dãy số tay với các giá trị tự chọn .28 Hình 3.4 Dãy số tự tạo hồn chỉnh gồm có phần tử 28 Hình 3.5 Các chức chương trình 29 Hình 3.6 Khởi tạo i = 0; j = i + 1; 30 Hình 3.7 So sánh A[i] A[j] tiến hành đổi chỗ hai phần tử 31 Hình 3.8 Hai phần tử tiến hành đổi chỗ thành công 31 Hình 3.9 Tiếp tục dãy số xếp 31 Hình 3.10 Khởi tạo tự dộng chọn thứ tự Giảm 32 Hình 3.11 Khởi tạo i j max =A[i] = 34 So sánh A[i] A[j] .33 Hình 3.12 Lúc tìm A[1] =85 > A[0] Tiến hành gán Max cho A[1] Tiếp tục tìm giá trị A[j] > Max .33 Hình 3.13 j đến cuối mảng khơng tìm giá trị A[j] > Max Tiến hành đổi chỗ 34 Hình 3.14 Tiếp tục lặp lại hoàn thành 34 Hình 3.15 Hồn thành xếp chọn trực tiếp 35 Hình 3.16 Giao diện khởi tạo chức Sắp xếp nhanh 36 Hình 3.17 Hoán vị hai phần tử thoả điều kiện thuật toán 37 Hình 3.18 Phân hoạch đoạn bên trái .37 Hình 3.19 Sắp xếp đoạn bên trái thành công 37 iv Hình 3.20 Tiến hành phân hoạch đoạn bên phải 38 Hình 3.21 Mơ tìm kiếm tuyến tính nhập số cần tìm X = 50 .38 Hình 3.22 Khơng có phần tử X = 50 thơng báo 39 Hình 3.23 Khởi tạo dãy số khác tìm X = 28 thành cơng 40 Hình 3.24 Khởi tạo dãy số tiến hành xếp trước tìm kiếm 41 Hình 3.25 Sắp xếp thành cơng bắt đầu tìm X = 28 41 Hình 3.26 Do X = 28 < Mid = 53 nên tiến hành phân hoạch đoạn bên trái 42 Hình 3.27 Khơng tìm thấy giá trị X = 28 mảng 42 Hình 3.28 Do X = 78 > mid = 53 nên tiến hành phân hoạch đoạn bên phải 43 Hình 3.29 Đã tìm thấy X = 78 kết thúc thuật toán .43 v DANH MỤC BẢNG Bảng 2.1 Cài đặt thuật toán xếp Đổi chỗ trực tiếp C/C++ .5 Bảng 2.2 Bảng đánh giá độ phức tạp thuật toán Sắp xếp đổi chỗ trực tiếp .6 Bảng 2.3 Cài đặt thuật toán Selection Sort C/C++ .10 Bảng 2.4 Ưu & Nhược điểm thuật toán Selection Sort 10 Bảng 2.5 Bảng đánh giá độ phức tạp thuật toán QuickSort 16 Bảng 2.6 Bảng đánh giá độ phức tạp thuật toán BinarySearch 23 vi LỜI CẢM ƠN Đầu tiên nhóm em xin chân thành cảm ơn quý thầy cô, chúng em xin phép bày tỏ lòng biết ơn sâu sắc đến tất Thầy cô bạn bè tạo điều kiện hỗ trợ, giúp đỡ chúng em suốt thời gian qua để nhóm thực tốt đề tài Với lòng biết ơn sâu sắc nhất, em xin gửi lời tri ân đến quý Thầy Cô Khoa Công Nghệ Thông Tin trường Đại học Công nghiệp Thực phẩm, đặc biệt cô giáo Đào Minh Châu - người hướng dẫn trực tiếp cho nhóm em q trình thực đề tài Cảm ơn quý Thầy Cô truyền đạt vốn kiến thức quý báu nhiệt tình giúp đỡ chúng em lúc gặp khó khăn thực đề tài, để chúng em có hồn thành đề tài Đồ án thực vòng tuần Chúng em biết bước đầu nhiều hạn chế khơng tránh khỏi thiếu sót ,nhóm em mong nhận ý kiến đóng góp q báu q Thầy Cơ để hồn thiện đồng thời bổ sung, nâng cao kiến thức cho thời gian tới Em xin chân thành cảm ơn vii LỜI MỞ ĐẦU Lý chọn đề tài: Trong toán học khoa học máy tính, thuật tốn, cịn gọi giải thuật, tập hợp hữu hạn hướng dẫn xác định rõ ràng, thực máy tính, thường để giải lớp vấn đề để thực phép tính Các thuật tốn ln rõ ràng sử dụng rõ việc thực phép tính, xử lý liệu, suy luận tự động tác vụ khác Thuật toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác ấy, từ Input tốn, ta nhận Output cần tìm, giải yêu cầu toán đặt Mọi sản phẩm phần mềm muốn thành cơng có sức ảnh hưởng cần phải áp dụng xác thuật tốn Thuật tốn minh họa ngôn ngữ tự nhiên (natural language), sơ đồ (flow chart) mã giả (pseudo code) Trong thực tế, thuật toán thường minh họa hay thể mã giả dựa hay số ngơn ngữ lập trình (thường ngơn ngữ mà người lập trình chọn để cài đặt thuật tốn),chẳng hạn C/C++, Pascal, Khi xác định cấu trúc liệu thích hợp, lập trình viên bắt đầu tiến hành xây dựng thuật toán tương ứng theo yêu cầu toán đặt sở cấu trúc liệu chọn Để giải vấn đề có nhiều phương pháp, lựa chọn phương pháp phù hợp việc mà lập trình viên phải cân nhắc tính tốn cẩn thận Sự lựa chọn góp phần đáng kể việc tối giản hóa cơng việc lập trình viên phần cài đặt thuật tốn ngơn ngữ cụ thể Thuật tốn tìm kiếm (search algorithm) Thuật tốn xếp (sort algorithm) top thuật toán quan trọng sử dụng phổ biến Đây thuật tốn mà lập trình viên phải nắm rõ để mở rộng, phát triển giải toán phức tạp Chính tầm quan trọng nên chúng em chọn đề tài Dưới hướng dẫn cô Đào Minh Châu vận dụng kiến thức học em thực đề tài “Cài đặt mơ thuật tốn xếp chọn trực tiếp đổi chỗ trực tiếp” Mục tiêu:  Nắm vững kiến thức thuật toán xếp chon trực tiếp , đổi chỗ trực tiếp Quick sort, tìm kiếm tuyến tính, tìm kiếm nhị phân  Xây dựng chương trình mơ hai thuật tốn tìm kiếm ( Linear Search Binary Search) ba thuật toán xếp ( Interchange Sort, Selection Sort Quick Sort ) Bố cục đề tài: Bài báo cáo gồm chương:    Chương I: Tổng quan thuật tốn tìm kiếm thuật tốn xếp Chương II: Một số thuật tốn tìm kiếm thuật tốn xếp thơng dụng Chương III: Cài đặt chương trình mơ phịng thuật tốn tìm kiếm thuật tốn xếp C# 3.3.3 Mơ thuật tốn Sắp xếp Chọn trực tiếp (Selection Sort): Lần tiến hành khởi tạo tự động với số lượng phần tử chọn Chức Giảm Hình 3.10 Khởi tạo tự dộng chọn thứ tự Giảm 32 Hình 3.11 Khởi tạo i j max =A[i] = 34 So sánh A[i] A[j] Hình 3.12 Lúc tìm A[1] =85 > A[0] Tiến hành gán Max cho A[1] Tiếp tục tìm giá trị A[j] > Max 33 Hình 3.13 j đến cuối mảng khơng tìm giá trị A[j] > Max Tiến hành đổi chỗ Hình 3.14 Tiếp tục lặp lại hồn thành 34 Hình 3.15 Hồn thành xếp chọn trực tiếp 35 3.3.4 Mơ thuật tốn Sắp xếp nhanh (Quick Sort): Hình 3.16 Giao diện khởi tạo chức Sắp xếp nhanh 36 Hình 3.17 Hốn vị hai phần tử thoả điều kiện thuật tốn Hình 3.18 Phân hoạch đoạn bên trái Hình 3.19 Sắp xếp đoạn bên trái thành cơng 37 Hình 3.20 Tiến hành phân hoạch đoạn bên phải 3.3.5 Mơ thuật tốn Tìm kiếm tuyến tính (Linear Search): Hình 3.21 Mơ tìm kiếm tuyến tính nhập số cần tìm X = 50 38 *Lưu ý: Nếu không nhập giá trị cần tìm thơng báo Cần phải giá trị cần tìm thuật tốn chạy! Hình 3.22 Khơng có phần tử X = 50 thơng báo 39 Hình 3.23 Khởi tạo dãy số khác tìm X = 28 thành công 40 3.3.6 Mô thuật tốn Tìm kiến nhị phân (Binary Search): Hình 3.24 Khởi tạo dãy số tiến hành xếp trước tìm kiếm Hình 3.25 Sắp xếp thành cơng bắt đầu tìm X = 28 41 Hình 3.26 Do X = 28 < Mid = 53 nên tiến hành phân hoạch đoạn bên trái Hình 3.27 Khơng tìm thấy giá trị X = 28 mảng 42 Hình 3.28 Do X = 78 > mid = 53 nên tiến hành phân hoạch đoạn bên phải Hình 3.29 Đã tìm thấy X = 78 kết thúc thuật toán 43 KẾT LUẬN Trong thời gian tuần thực đề tài giúp em phần nắm vững kiến thức lập trình sở, tư thuật tốn làm chủ số thuật tốn tìm kiếm xếp thơng dụng Ngồi cịn nắm vững kiến thức lập trình hướng đối tượng với C#, window form Xây dựng chương trình mơ phịng thuật tốn đơn giản Chương trình giúp người xem hiểu cách thực hoạt động thuật tốn Chúng em biết rằng, kiến thức chưa đủ cịn nhiều thiếu sót, kiến thức nghiên cứu chưa thực nhiều xác có phần hồn thiện thêm vốn kiến thức Trong tương lai, chúng em hồn thiện chương trình đầy đủ thuật tốn xếp, thuật tốn giúp người học lập trình nhìn trực quan thuật toán Rất mong nhận lời góp ý thầy bạn giúp em hoàn thiện 44 TÀI LIỆU THAM KHẢO [1] Khoa Công Nghệ Thông Tin, Bài giảng Kỹ Thuật Lập Trình, Trường Đại Học Cơng Nghiệp Thực Phẩm TP.HCM [2] Khoa Công Nghệ Thông Tin, Bài giảng Cấu Trúc Dữ Liệu, Trường Đại Học Công Nghiệp Thực Phẩm TP.HCM 45 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 46 ... 2.1 Cài đặt thuật toán xếp Đổi chỗ trực tiếp C/C++ 2.1.4 Đánh giá thuật toán Interchange sort: Bảng 2.2 Bảng đánh giá độ phức tạp thuật toán Sắp xếp đổi chỗ trực tiếp InterchangeSort thuật toán. .. Mơ thuật tốn Sắp xếp trực tiếp (InterChange Sort): 30 ii 3.3.3 Mô thuật toán Sắp xếp Chọn trực tiếp (Selection Sort): .32 3.3.4 Mơ thuật tốn Sắp xếp nhanh (Quick Sort): .36 3.3.5 Mô thuật. .. thúc thuật toán .43 v DANH MỤC BẢNG Bảng 2.1 Cài đặt thuật toán xếp Đổi chỗ trực tiếp C/C++ .5 Bảng 2.2 Bảng đánh giá độ phức tạp thuật toán Sắp xếp đổi chỗ trực tiếp .6 Bảng 2.3 Cài

Ngày đăng: 22/12/2021, 20:48

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • DANH MỤC HÌNH ẢNH

  • DANH MỤC BẢNG

  • LỜI CẢM ƠN

  • LỜI MỞ ĐẦU

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

    • 2. Mục tiêu:

    • 3. Bố cục đề tài:

    • CHƯƠNG I: TỔNG QUAN VỀ THUẬT TOÁN TÌM KIẾM VÀ THUẬT TOÁN SẮP XẾP

      • 1.1 Khái quát về các thuật toán tìm kiếm và thuật toán sắp xếp:

      • 1.2 Phân loại thuật toán tìm kiếm:

        • 1.2.1 Phân loại dựa theo dữ liệu:

        • 1.2.2 Phân loại theo độ phức tạp của thuật toán:

        • 1.3 Phân loại thuật toán sắp xếp :

          • 1.3.1 Phân loại theo độ phức tạp của thuật toán:

          • 1.3.2 Phân loại dựa theo có phải là một phương pháp so sánh hay không:

          • 1.3.3 Phân loại dựa theo khả năng thích ứng:

          • 1.3.4 Phân loại dựa theo tính ổn định của thuật toán:

          • CHƯƠNG 2: MỘT SỐ THUẬT TOÁN THÔNG DỤNG

            • 2.1 Thuật toán sắp xếp đổi chỗ trực tiếp – Interchange sort:

              • 2.1.1 Ý tưởng thuật toán:

              • 2.1.2 Giải thuật Interchange sort:

              • 2.1.3 Cài đặt thuật toán Interchange sort:

              • 2.1.4 Đánh giá thuật toán Interchange sort:

              • 2.2 Thuận toán sắp xếp chọn trực tiếp – Selection sort:

                • 2.2.1 Ý tưởng thuật toán:

                • 2.2.2 Giải thuật Selection sort:

Tài liệu cùng người dùng

Tài liệu liên quan