Đề tài : TÌM HIỂU THUẬT TOÁN SẮP XẾP HEAP SORT VÀ ỨNG DỤNG GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG

37 1.2K 14
Đề tài :  TÌM HIỂU THUẬT TOÁN SẮP XẾP HEAP SORT VÀ ỨNG DỤNG GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN& TRUYỀN THÔNG KHOA CÔNG NGHỆ THÔNG TIN o0o BÁO CÁO THỰC TẬP CƠ SỞ Đề tài : TÌM HIỂU THUẬT TOÁN SẮP XẾP HEAP SORT ỨNG DỤNG GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG Giáo viên hướng dẫn : Đặng Thị Oanh Sinh viên thực : Nguyễn Hữu Thi Lớp : CNTT_K12D Thái Nguyên, tháng 04 năm 2016 MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG KIẾN THỨC CƠ SỞ 1.1 BÀI TOÁN SẮP XẾP 1.1.1.Khái niệm toán xếp .5 1.1.2.Nội dung, ví dụ phân tích toán xếp 1.2 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C .9 1.2.1 Sự phát triển ngôn ngữ lập trình C 1.2.2 Cấu trúc chương trình C 11 1.2.3 Các kiểu liệu khai báo biến 13 CHƯƠNG 16 THUẬT TOÁN HEAP SORT 16 2.1 Ý TƯỞNG 16 2.2 NỘI DUNG .17 2.2.1 Các tính chất Heap 17 2.2.2 Giải thuật Heap Sort .18 2.2.3 Ðánh giá giải thuật .18 2.3 THỦ TỤC HEAP SORT 18 2.4 VÍ DỤ 18 2.5 LƯU ĐỒ THUẬT TOÁN 21 2.6 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN .23 CHƯƠNG 24 ỨNG DỤNG CHƯƠNG TRÌNH .24 3.1 BÀI TOÁN NGƯỜI BÁN HÀNG 24 3.1.1 Bài toán 24 3.1.2 Phân tích .24 3.1.3 Độ phức tạp thuật toán 26 3.1.4 Cài đặt thuật toán 26 3.2.1 Công cụ lập trình 31 3.2.2 Kết thực 32 KẾT LUẬN 35 TÀI LIỆU THAM KHẢO 36 Chữ ký GV hướng dẫn 37 LỜI CẢM ƠN Để hoàn tất thực tập này, em xin gửi lời cảm ơn sâu sắc đến quý Thầy Cô Khoa Công nghệ thông tin, Trường Đại học Công Nghệ Thông Tin Truyền Thông Thái Nguyên, với tri thức tâm huyết truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trường Em xin chân thành cảm ơn TS Đặng Thị Oanh tận tâm giúp đỡ hướng dẫn em suốt trình thực đề tài Nếu hướng dẫn, bảo cô em khó hoàn thiện Em xin chân thành cảm ơn đến bạn bè giúp đỡ, trao đổi hoàn thiện thực tập sở Thái Nguyên, ngày 29 tháng 04 năm 2016 Sinh viên Nguyễn Hữu Thi LỜI NÓI ĐẦU Hiện công nghệ thông tin ngày phát triển ứng dụng rộng rãi tất lĩnh vực sống Trong hầu hết hệ lưu trữ, quản lý liệu, thao tác tìm kiếm thường thực nhiều để khai thác thông tin cách nhanh chóng Muốn việc tìm kiếm nhanh chóng liệu cần phải xếp sẵn, ngăn nắp theo trật tự, hệ thống định cho phép tìm kiếm nhanh Việc tìm kiếm, xếp có ý nghĩa lớn việc quản lý lưu trữ Nội dung mà em muốn trình bày số thuật toán xếp thông dụng nội dung mà cô Đặng Thị Oanh giúp đỡ hướng dẫn em nghiên cứu đề tài “Tìm hiểu thuật toán xếp kiểu vun đống (Heap Sort) ứng dụng giải toán người giao hàng” Mục tiêu nhiệm vụ - Mô tả thuật toán xếp kiểu vun đống (Heap Sort) - Hướng đến kỹ thuật lập trình với ngôn ngữ lập trình C - Áp dụng kết nghiên cứu để tạo DEMO mô thuật toán xếp qua toán người giao hàng Em mong nhận thông cảm đóng góp Thầy, Cô để lần sau làm tốt Em xin trân thành cảm ơn ! Thái Nguyên, ngày 29 tháng 04 năm 2016 CHƯƠNG KIẾN THỨC CƠ SỞ 1.1 BÀI TOÁN SẮP XẾP 1.1.1 Khái niệm toán xếp Sắp xếp trình bố trí lại phần tử tập đối tượng theo thứ tự định Chẳng hạn thứ tự tăng dần (hay giảm dần) dãy số, thứ tự từ điển từ v.v… Yêu cầu xếp thường xuyên xuất ứng dụng Tin học với mục đích khác nhau: xếp liệu máy tính để tìm kiếm cho thuận lợi, xếp kết xử lý để in bảng biểu v.v… 1.1.2 Nội dung, ví dụ phân tích toán xếp Dữ liệu xuất nhiều dạng khác nhau, ta quy ước: Một tập đối tượng cần xếp tập ghi (records), ghi bao gồm số trường (fields) khác Nhưng toàn trường liệu ghi xem xét đến trình xếp mà trường (hay vài trường đó) ý tới Trường ta gọi khoá (key) Sắp xếp tiến hành dựa vào giá trị khoá Ví dụ: Hồ sơ tuyển sinh trường Đại học danh sách thí sinh, thí sinh có tên, số báo danh, điểm thi Khi muốn liệt kê danh sách thí sinh trúng tuyển tức phải xếp thí sinh theo thứ tự từ điểm cao tới điểm thấp Ở khoá xếp điểm thi STT SBD A100 B200 X150 G180 Họ Tên Nguyễn Văn A Trần Thị B Phạm Văn C Đỗ Thị D Điểm Thi 20 25 18 21 Khi xếp, ghi bảng đặt lại vào vị trí cho giá trị khoá tương ứng với chúng có thứ tự ấn định Vì kích thước toàn ghi lớn, nên việc xếp thực trực tiếp ghi đòi hỏi chuyển đổi vị trí ghi, kéo theo việc thường xuyên phải di chuyển, copy vùng nhớ lớn, gây tổn phí thời gian nhiều Thường người ta khắc phục tình trạng cách xây dựng bảng khoá: Mỗi ghi bảng ban đầu tương ứng với ghi bảng khoá Bảng khoá gồm ghi ghi gồm có hai trường Trường thứ chứa khoá Trường thứ hai chứa liên kết tới ghi bảng ban đầu, tức chứa thông tin đủ để biết ghi tương ứng với bảng ban đầu ghi Sau đó, việc xếp thực trực tiếp bảng khoá, trình xếp, bảng không bị ảnh hưởng gì, việc truy cập vào ghi bảng thực cách dựa vào trường liên kết ghi tương ứng thuộc bảng khoá Như ví dụ trên, ta xây dựng bảng khoá gồm trường, trường khoá chứa điểm trường liên kết chứa số thứ tự người có điểm tương ứng bảng ban đầu: Điểm thi STT 20 25 18 21 Sau xếp theo trật tự điểm cao tới điểm thấp nhất, bảng khoá trở thành: Điểm thi STT 25 21 20 18 Dựa vào bảng khoá, ta biết người có điểm cao người mang số thứ tự 2, người mang số thứ tự 4, tiếp người mang số thứ tự 1, cuối người mang số thứ tự 3, muốn liệt kê danh sách đầy đủ ta việc đối chiếu với bảng ban đầu liệt kê theo thứ tự 2, 4, 1, Có thể cải tiến tốt dựa vào nhận xét sau: Trong bảng khoá, nội dung trường khoá hoàn toàn suy từ trường liên kết cách: Dựa vào trường liên kết, tìm tới ghi tương ứng bảng truy xuất trường khoá bảng Như ví dụ người mang số thứ tự chắn phải có điểm thi 20, người mang số thứ tự chắn phải có điểm thi 18 Vậy bảng khoá loại bỏ trường khoá mà giữ lại trường liên kết Trong trường hợp phần tử bảng ban đầu đánh số từ tới n trường liên kết số thứ tự ghi bảng ban đầu ví dụ trên, người ta gọi kỹ thuật kỹ thuật xếp số: Bảng ban đầu không bị ảnh hưởng cả, việc xếp đơn đánh lại số cho ghi theo thứ tự xếp Cụ thể hơn: Nếu r[1 n] ghi cần xếp theo thứ tự định việc xếp số tức xây dựng dãy Index[1 n] mà đây: Index[j] = Chỉ số ghi đứng thứ j thứ tự (Bản ghi r[index[j]] phải đứng sau j - ghi khác xếp) Do khoá có vai trò đặc biệt nên sau này, trình bày giải thuật, ta coi khoá đại diện cho ghi đơn giản, ta nói tới giá trị khoá mà Các thao tác kỹ thuật xếp lẽ tác động lên toàn ghi làm khoá Còn việc cài đặt phương pháp xếp danh sách ghi kỹ thuật xếp số, ta coi tập Bài toán xếp phát biểu sau: Xét quan hệ thứ tự toàn phần "nhỏ bằng" ký hiệu "≤" tập hợp S, quan hệ hai thoả mãn bốn tính chất: Với ∀a, b, c ∈ S Tính phổ biến: Hoặc a ≤ b, b ≤ a; Tính phản xạ: a ≤ a Tính phản đối xứng: Nếu a ≤ b b ≤ a bắt buộc a = b Tính bắc cầu: Nếu có a ≤ b b ≤ c a ≤ c Trong trường hợp a ≤ b a ≠ b, ta dùnghiệu " %d: ",i,j); scanf("%d",&a[i][j]); } } } 26 } } void inMang(){ for (int i=0; i0; i ){ int temp = a[0]; a[0] = a[i]; a[i] = temp; heapify(a, i,0); } } int kiemTra(int x, int *b){ for (int i=0; i

Ngày đăng: 30/08/2017, 09:24

Mục lục

  • MỤC LỤC

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1

  • KIẾN THỨC CƠ SỞ

    • 1.1. BÀI TOÁN SẮP XẾP

      • 1.1.1. Khái niệm bài toán sắp xếp

      • 1.1.2. Nội dung, ví dụ phân tích về bài toán sắp xếp

      • 1.2. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C

        • 1.2.1. Sự phát triển của ngôn ngữ lập trình C

        • 1.2.2. Cấu trúc chương trình C

        • 1.2.3. Các kiểu dữ liệu và khai báo biến

        • CHƯƠNG 2

        • THUẬT TOÁN HEAP SORT

          • 2.1. Ý TƯỞNG

          • 2.2. NỘI DUNG

            • 2.2.1. Các tính chất của Heap

            • 2.2.2. Giải thuật Heap Sort

            • 2.2.3. Ðánh giá giải thuật

            • 2.3. THỦ TỤC HEAP SORT

            • 2.4. VÍ DỤ

            • 2.5 LƯU ĐỒ THUẬT TOÁN

            • 2.6. ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

            • CHƯƠNG 3

            • ỨNG DỤNG VÀ CHƯƠNG TRÌNH

              • 3.1. BÀI TOÁN NGƯỜI BÁN HÀNG

                • 3.1.1. Bài toán

                • 3.1.2. Phân tích

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

Tài liệu liên quan