Các phương pháp sắp xếp trong

60 17 0
Các phương pháp sắp xếp trong

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN - - LÊ PHƯỚC HUYỀN SẮP XẾP TRONG KHÓA LUẬN TỐT NGHIỆP -1- LỜI CẢM ƠN Bốn năm học trường Đại Học Sư Phạm, thầy cô trang bị cho em kiến thức lẫn kỹ sống Vì em muốn gởi lời cảm ơn đến Ban Giám Hiệu nhà trường, thầy cô giúp em có hành trang kiến thức vững vàng cho tương lại Trải qua tháng thực hiện, vận dụng học học thêm nhiều điều, luận văn tốt nghiệp hồn thành Để có kết này, khơng phải cơng sức em làm ra, mà cịn có hỗ trợ từ gia đình, thầy bạn bè Đầu tiên em xin gởi đến PGS.TSKH.Trần Quốc Chiến lời cảm ơn chân thành nhất, thầy giảng viên trực tiếp hướng dẫn em suốt trình nghiên cứu thực đề tài Thầy tận tình hướng dẫn, cung cấp tài liệu cần thiết để em bạn nhóm luận văn thầy hướng dẫn hồn thành luận văn cách tốt Kế đến em xin gởi đến người thân yêu gia đình mình, người ln ủng hộ em khơng thời gian qua mà cịn ngày tháng sau Và lời cảm ơn cuối dành cho người bạn đáng quý em vượt qua khó khăn, ln chia kiến thức học tập, vui buồn sống Cảm ơn bạn! Với lượng thời gian có hạn điều kiện sinh viên, luận văn không tránh khỏi hạn chế sai sót Em kính mong nhận lời góp ý chân thành quý thầy cô bạn bè gần xa SVTH: LÊ PHƯỚC HUYỀN -2- MỤC LỤC LỜI CẢM ƠN MỤC LỤC MỞ ĐẦU Lý chọn đề tài Mục đích nghiên cứu Nhiệm vụ nghiên cứu .6 Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu CHƯƠNG I THUẬT TOÁN VÀ ĐỘ PHỨC TẠP 1.1 Khái niệm giải thuật 1.2 Các đặc trưng giải thuật 1.3 Ngôn ngữ giải thuật 1.4 Độ phức tạp tính tốn giải thuật .8 1.5 Biểu diễn thời gian chạy thuật giải 1.6 Xác định độ phức tạp tính tốn giải thuật 10 1.6.1 Qui tắc cộng 10 1.6.2 Qui tắc nhân 11 1.6.3 Qui tắc tổng quát để phân tích chương trình 11 1.7 Phân tích chương trình đệ quy 11 1.7.1 Thành lập phương trình đệ quy .11 1.7.2 Giải phương trình đệ quy .12 CHƯƠNG II PHƯƠNG PHÁP SẮP XẾP TRONG 15 2.1 SELECTION SORT .15 2.2 INSERTION SORT 17 2.3 BUBBLE SORT 19 2.4 INTERCHANGE SORT ( đổi chỗ trực tiếp) 21 2.5 SHELL SORT .23 2.6 QUICKSORT 27 2.7 HEAPSORT 36 -3- 2.8 BINSORT .41 2.9 MERGE SORT .45 2.10 RADIXSORT 50 CHƯƠNG III CHƯƠNG TRÌNH MINH HỌA 54 3.1 Tổng quan phần mềm: .54 3.2 Hướng phát triển phần mềm: 56 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 57 -4- MỞ ĐẦU Lý chọn đề tài Nếu muốn lập trình phần mềm giúp ích cho sống ngồi nắm vững ngơn ngữ lập trình cần phải nắm vững thuật tốn Vì môn học CẤU TRÚC DỮ LIỆU GIẢI THUẬT xem mơn học đóng vai trị tảng bắt đầu bước vào giới lập trình Mơn học giúp hiểu rõ chất thuật toán biết độ phức tạp của phương pháp nhờ lựa chọn cách lập trình tốt Và xếp số liệu yêu cầu khơng thể thiếu phần mềm lập trình viên phải nắm vững kiến thức lĩnh vực từ chọn phương pháp xếp phù hợp với người sử dụng số liệu nhập vào Vì em chọn đề tài “ xếp ” để sâu, nắm vững kiến thức cách sâu sắc có hệ thống Mục đích nghiên cứu Đồ án trình bày số phương pháp xếp Mục đích sau nghiên cứu nắm vững phần sau phương pháp: Đánh giá Ý tưởng Minh họa PP Sắp xếp Chương Trình Giải Thuật -5- Nhiệm vụ nghiên cứu Nghiên cứu ý tưởng, thuật toán, phương pháp “ xếp ” Sau cài đặt chương trình minh hoạ cho đề tài Đánh giá độ phức tạp phương pháp “sắp xếp trong” rút ưu, khuyết điểm phương pháp xếp Qua rút kết luận phương pháp xếp nên dùng toán Đối tượng phạm vi nghiên cứu Có nhiều phương pháp xếp đề tài nghiên cứu phương pháp “ xếp ” sau đây: 1.Selection sort 2.Insertion sort 3.Shell sort 4.Heap sort 5.Interchange sort 6.Bubble sort 7.Quick sort 8.Merge sort 9.Binsort 10.Radixsort Phương pháp nghiên cứu -Thu thập, phân tích tài liệu liên quan đến xếp -Phân tích tốn, xây dựng chương trình đệ quy -Tổng hợp kết -6- CHƯƠNG I THUẬT TOÁN VÀ ĐỘ PHỨC TẠP 1.1 Khái niệm giải thuật Giải thuật khái niệm quan trọng toán học Giải thuật dãy xác định, hữu hạn thao tác mà sau thực chúng cách ta kết mong muốn “ Hữu hạn ” hiểu mặt thời gian thực lẫn công cụ thực 1.2 Các đặc trưng giải thuật * Tính dừng : Sau bước hữu hạn giải thuật phải dừng * Tính xác định : Các bước thao tác phải rõ ràng, không gây nhập nhằng Nói rõ điều kiện, hai xử lý thực bước giải thuật phải cho kết * Tính hiệu : Giải thuật cần phải đắn nghĩa sau đưa liệu vào giải thuật hoạt động đưa kết ý muốn * Tính phổ dụng : Giải thuật giải toán lớp tốn Cụ thể giải thuật có đầu vào liệu khác miền xác định * Yếu tố vào : Một giải thuật ln ln có đối tượng vào đối tượng 1.3 Ngôn ngữ giải thuật Giải thuật thường mô tả dãy lệnh Bộ xử lý thực lệnh theo trật tự định gặp lệnh dừng kết thúc Ngơn ngữ giải thuật gồm loại :  Ngôn ngữ liệt kê bước  Sơ đồ khối  Ngôn ngữ cấu trúc -7- 1.4 Độ phức tạp tính tốn giải thuật Với tốn khơng có giải thuật Chọn giải thuật đưa tới kết nhanh địi hỏi thực tế Như cần có để nói giải thuật nhanh giải thuật ? Thời gian thực giải thuật chương trình máy tính phụ thuộc vào nhiều yếu tố Một yếu tố cần ý kích thước liệu vào Dữ liệu lớn thời gian xử lý chậm, chẳng hạn thời gian xếp dãy số phải chịu ảnh hưởng số lượng số thuộc dãy số Nếu gọi n kích thước liệu đưa vào thời gian thực giải thuật biễu diễn cách tương đối hàm n: T(n) Phần cứng máy tính, ngơn ngữ viết chương trình chương trình dịch ngơn ngữ ảnh hưởng tới thời gian thực Những yếu tố khơng giống loại máy, dựa vào chúng xác định T(n) Tức T(n) biểu diễn đơn vị giờ, phút, giây Tuy nhiên, khơng phải mà so sánh giải thuật mặt tốc độ Cách đánh giá thời gian thực giải thuật độc lập với máy tính yếu tố liên qua tới máy tính dẫn tới khái niệm gọi là: Độ phức tạp tính tốn giải thuật Kí hiệu O Giả sử T(n) g(n) hàm thực không âm đối số nguyên không âm n Trong thời gian thực giải thuật biểu diễn T(n) có độ phức tạp O( g(n) ) Hàm T(n) gọi O(g(n)) tồn số dương c n0 cho T(n) = n0 Như vậy, T(n) = O(g(n)) có nghĩa hàm T(n) bị chặn hàm g(n) với nhân tử n đủ lớn Muốn chứng minh T(n)= O(g(n)), cần nhân tử c, số nguyên dương n0 chứng minh T(n) = n0 Ví dụ Giả sử T(n) = 5n3+ 2n2+ 13n + ta có: T(n) = 5n3+ 2n2+ 13n + = 1, ta có n 0= 1, c = 26 Do đó, ta nói T(n) = O(n3) -8- Tổng quát T(n) đa thức bậc k n: f(n) = aknk+ ak-1nk-1+ + a1n + a0 T(n) = O(nk) Ký hiệu O(g(n)) xác định tập hợp vô hạn hàm bị chặn hàm g(n), ta viết T(n) = O(g(n)) có nghĩa T(n) hàm Ví dụ: T(n) = O(n2) T(n) =O(75n2), T(n) = O(0,01n2), T(n) = O(n2+ 7n + logn), T(n) = O(n3), , tức có vơ số hàm cận 1.5 Biểu diễn thời gian chạy thuật giải Thời gian chạy thuật giải hàm cỡ liệu vào, ta gọi hàm T(n) Chúng ta biểu diễn thời gian chạy thuật giải ký hiệu: T(n) = O(f(n)), biểu diễn có nghĩa thời gian chạy T(n) bị chặn hàm f(n) Thế ta nhận xét, hàm có vơ số cận Trong số cận thời gian chạy, lấy cận chặt để biểu diễn thời gian chạy thuật giải Định nghĩa Ta nói f(n) cận chặt T(n) - T(n) = O(f(n)), - Nếu T(n) = O(g(n)) f(n) = O(g(n)) Nói cách khác, f(n) cận chặt T(n) cận T(n) ta khơng thể tìm hàm g(n) cận T(n) mà lại tăng chậm hàm f(n) Sau nói thời gian chạy thuật giải O(f(n)), cần hiểu f(n) cận chặt thời gian chạy Nếu T(n) = O(1) điều có nghĩa thời gian chạy thuật giải bị chặn số đó, ta thường nói thuật giải có thời gian chạy Nếu T(n) = O(n), thời gian chạy thuật giải bị chặn hàm tuyến tính, ta nói thời gian chạy thuật giải tuyến tính -9- Các cấp độ thời gian chạy thuật giải tên gọi chúng liệt kê sau: Kí Hiệu Tên Gọi O(1) Hằng O(logn) Logarit O(n) Tuyến tính O(nlogn) nlogn O(n2) Bình phương O(n3) Lập phương O(2n) Mũ Đối với thuật giải, đánh giá thời gian chạy thuộc cấp độ cấp độ liệt kê Trong bảng trên, xếp cấp độ thời gian chạy theo thứ tự tăng dần, chẳng hạn thuật giải có thời gian chạy O(logn) chạy nhanh thuật giải có thời gian chạy O(n), Các thuật giải có thời gian chạy O(nk), với k = 1,2,3, , gọi thuật giải thời gian chạy đa thức 1.6 Xác định độ phức tạp tính tốn giải thuật Cách tính độ phức tạp giải thuật vấn đề không đơn giản Tuy nhiên ta tuân theo số nguyên tắc sau: 1.6.1 Qui tắc cộng Nếu T1(n) T2(n) thời gian thực hai đoạn chương trình P1 P2; T1(n)=O(f(n)), T2(n)=O(g(n)) thời gian thực đoạn hai chương trình nối tiếp T(n)=O(max(f(n),g(n))) - 10 - 2.9.2Giải thuật Merge sort 2.9.2.1 Định nghĩa trộn Giả sử có hai danh sách xếp a[1,2,3 ,m] b[1,.,n.] Ta trộn chúng lại thành danh sách c[1, ,m + n] xếp theo cách sau:  So sánh hai phần tử đứng đầu hai danh sách, lấy phần tử nhỏ cho vào danh sách phụ  Tiếp tục hai danh sách rỗng Khi hai danh sách rỗng ta lấy phần lại danh sách phần tử cho vào cuối danh sách phụ Ví dụ: Cho hai danh sách a = (2,3,7,8) b = (1,4,5,6) danh sách phụ c Quá trình trộn danh sách diễn sau: Danh sách a Danh sách b So sánh Danh sách c 2,3,7,8 1,4,5,6 1

Ngày đăng: 21/05/2021, 23:00

Từ khóa liên quan

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

Tài liệu liên quan