Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
713 KB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN MÔN PHÂN TÍCH VÀ THIẾT KẾ THUẬT GIẢI ………………………………………………………… Đề tài: Phân tích thuật toán Sort Giảng viên hướng dẫn ThS Trịnh Huy Hoàng Nhóm thực 1/ Nguyễn Văn Hai 2/ Lý Trọng Hiếu 3/ Thiều Thị Na TP.Cần Thơ, tháng năm 2012 Thuật toán xếp MỞ ĐẦU Đề tài nhóm đánh giá độ phức tạp giải thuật xếp Nói đến giải thuật xếp có lẽ chủ đề quen thuộc kinh điển Tuy nhiên, xem quen thuộc nên thường hay quên Mục tiêu đề tài để nắm lại tư tưởng thuật toán xếp, độ phức tạp mặt lý thuyết, nữa, thực nghiệm đánh giá, kiểm chứng lại độ phức tạp Nội dung phần báo cáo chia làm phần lớn: Nền tảng lý thuyết: Giới thiệu tổng quan tư tưởng, độ phức tạp thuật toán xếp Thực nghiệm: Nêu lên cách tiến hành thực nghiệm, kết nhận xét Trang Thuật toán xếp MỤC LỤC MỞ ĐẦU MỤC LỤC 1.1 SELECTION SORT 1.1.1/ Giới thiệu sơ lược thuật toán: 1.2 INTERCHANGE SORT 1.2.1/ Giới thiệu sơ lược thuật toán: 1.3 BUBBLE SORT 11 1.3.2/ Thuật toán mã giả: .12 1.3.3/ Mã nguồn ngôn ngữ C: 12 1.3.4/ Đánh giá thuật toán: 13 1.4 INSERTION SORT 15 1.5.1/ Giới thiệu sơ lược thuật toán: .15 * Ví dụ: Cho danh sách 15 1.5.2/ Thuật toán mã giả: .16 1.5.3/ Mã nguồn: .16 1.5 HEAP SORT 19 1.5.1/ Giới thiệu sơ lược thuật toán 19 1.6 MERGE SORT 23 Trong khoa học máy tính, xếp trộn (merge sort) thuật toán xếp để xếp danh sách (hoặc cấu trúc liệu truy cập tuần tự, v.d luồng tập tin) theo trật tự Thuật toán ví dụ tương đối điển hình lối thuật toán chia để trị Nó xếp vào thể loại xếp so sánh 23 1.6.2/ Thuật toán mã giả: .24 1.6.4/ Đánh giá thuật toán: 26 1.7 QUICK SORT 27 1.7.1/ Giới thiệu sơ lược thuật toán 27 1.8 SHELL SORT 31 1.8.1/ Giới thiệu sơ lược thuật toán 31 1.8.2/ Thuật toán mã giả: .32 1.8.4/ Đánh giá thuật toán: 34 Trang Thuật toán xếp 1.1 SELECTION SORT 1.1.1/ Giới thiệu sơ lược thuật toán: Selection sort thuật toán xếp đơn giản nhằm cải tiến tốc độ cho bubble sort Nó làm việc cách tìm phần tử nhỏ tập liệu cách tìm kiếm tuyến tính hoán đổi vị trí phần tử với phần tử tập liệu, sau tìm phần tử nhỏ thứ hai cách duyệt phạm vi phần tử lại trừ phần tử đầu xếp xong, Selection sort thuật toán xét thời gian chạy so với thuật toán khác không bị ảnh hưởng tình trạng thứ tự liệu đầu vào, thực số lượng thao tác cấu trúc đơn giản Ta chọn phần tử nhỏ N phần tử ban đầu, đưa phần tử đầu dãy hành Sau đó, ta không quan tâm đến nữa, ta xem dãy hành N-1 phần tử dãy ban đầu tính từ vị trí thứ Cứ vậy, dãy hành phần tử, ta dãy tăng * Các bước tiến hành sau: o Bước 1: Khởi động i = o Bước 2: Tìm phần tử nhỏ a[min] dãy hành từ a[i] đến a[N] o Bước 3: Hoán vị a[min] a[i] o Bước 4: i = i+1 Nếu i < =N-1: quay trở lại bước Ngược lại: STOP! * Ví dụ: Cho dãy a = (12,2,8,5,1,6,4,15) 12 15 Bước 1: 12 15 Bước 2: 12 15 Bước 3: 12 15 Bước 4: 12 15 Bước 5: 12 15 Bước 6: 12 15 Bước 7: 12 15 1.1.2/ Thuật toán mã giả: Trang Thuật toán xếp Void SelectionSort(int a[], int n) { int min; for(int i=0;i[...]... hiển thị với đầu vào là 1 List các số nguyên : Trang 25 Thuật toán sắp xếp 1.6.4/ Đánh giá thuật toán: Thuật toán trộn tự nhiên khác thuật toán trộn trực tiếp ở chỗ thay vì luôn cứng nhắc phân hoạch theo dãy con có chiều dài k, việc phân hoạch sẽ theo đơn vị là đường chạy ta chỉ cần biết số đường chạy của a sau lần phân hoạch cuối cùng là có thể biết thời điểm dừng của thuật toán vì dãy đã có thứ tự là... hợp Trang 14 Thuật toán sắp xếp 1.4 INSERTION SORT 1.5.1/ Giới thiệu sơ lược thuật toán: Sắp xếp chèn (insertion sort) là một thuật toán sắp xếp rất hiệu quả với các danh sách nhỏ Nó lần lượt lấy các phần tử của danh sách chèn vào vị trí thích hợp trong một danh sách mới đã được sắp Thuật toán sắp xếp chèn làm việc cũng giống như tên gọi - Nó thực hiện việc quét một tập dữ liệu, với mỗi phân tử, thủ... tiếp tục sắp xếp - Thuật toán dừng khi h = 1, lúc này bảo đảm tất cả các phần tử trong dãy ban đầu sẽ được so sánh với nhau để xác định trật tự cuối cùng * Giải thuật: Bước 1 : Chọn k khoảng cách h[1], h[2],…,h[k] và i=1 Bước 2 : Phân chia dãy ban đầu thành các dãy con cách nhau h[i] khoảng cách Sắp xếp từng dãy con bằng phương pháp chèn trực tiếp Bước 3 : i=i+1; Trang 31 Thuật toán sắp xếp Nếu i>k... tập phân đoạn thì mỗi tập chứa các phần tử thứ i liên tiếp kể từ điểm xuất phát của tập đó - Ý tưởng chính của thuật toán là phân chia dãy ban đầu thành nhưng dãy con mà mỗi phần tử của dãy cách nhau 1 vị trí là h Insertion sort áp dụng sau đó trên mỗi dãy con sẽ làm cho các phần tử được đưa về vị trí đúng tương đối (trong dãy con) 1 cách nhanh chóng - Sau đó tiếp tục giảm khoảng cách h để tạo thành các. .. chạy Một nhược điểm lớn nữa của thuật toán trộn là khi cài đặt thuật toán đòi hỏi thêm không gian bộ nhớ để lưu các dãy phụ b, c Hạn chế này khó chấp nhận trong thực tế vì các dãy cần sắp xếp thường có kích thước lớn Vì vậy thuật toán trộn thường được dùng để sắp xếp các cấu trúc dữ liệu khác phù hợp hơn như danh sách liên kết hoặc file Ta thấy ngay số lần lặp của bước 2 (phân phối) và bước 3(trộn) bằng... cout