Giáo trình cấu trúc dữ liệu và giải thuật_Chương 7: Sắp xếp
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Giáo trình cấu trúc dữ liệu và giải thuật_Chương 7: Sắp xếpChương 7: SẮP XẾP1. GIỚI THIỆU VỀ BÀI TOÁN SẮP XẾPSắp xếp các nút của một cấu trúc theo thứ tự tăng dần (hay giảm dần) là một côngviệc được thực hiện thường xuyên. Với một cấu trúc đã được sắp xếp chúng ta rấtthuận tiện khi thực hiện các tác vụ trên cấu trúc như tìm kiếm, trích lọc duyệt cấutrúc…Có hai giải thuật sắp xếp được dùng phổ biến trong khoa học máy tính là sắp xếp dữliệu trên bộ nhớ trong (internal sort) và sắp xếp dữ liệu trên bộ nhớ ngoài (externalsort).Với sắp xếp dữ liệu trên bộ nhớ trong thì toàn bộ dữ liệu cần sắp xếp được đưa vàobộ nhớ trong, do vậy kích thước dữ liệu cần sắp xếp không lớn, tuy nhiên thời giansắp xếp được thực hiện rất nhanh.Với sắp xếp dữ liệu trên bộ nhớ ngoài thì chỉ một phần nhỏ dữ liệu cần sắp xếpđược đưa vào bộ nhớ trong, phần lớn dữ liệu được lưu trữ ở bộ nhớ ngoài như đĩa từ,băng từ, đĩa cứng… kích thước dữ liệu cần được sắp xếp lúc này rất lớn và thời giansắp xếp rất chậm.Để phân tích đánh giá giải thuật sắp xếp, chúng ta cần thẩm định giải thuật chiếmdụng bao nhiêu vùng nhớ, giải thuật chạy nhanh hay chạy chậm. Hai tiêu chí chínhdùng để phân tích một giải thuật sắp xếp là: • Sự chiếm dụng bộ nhớ của giải thuật. • Thời gian thực hiện của giải thuật.2. SẮP XẾP BỘ NHỚ TRONGCó rất nhiều giải thuật để hiện thực việc sắp xếp dữ liệu trong bộ nhớ trong. Ở phầnnày ta xét các phương pháp: bubble sort, simple selection sort, simple insertion sort,quicksort và merge sort.2.1 Giải thuật bubble sort2.1.1 Mô tả phương phápGiải thuật này sẽ duyệt danh sách nhiều lần, trong mỗi lần duyệt sẽ lần lượt so sánhtừng cập nút thứ i và thứ i + 1 và đổi chỗ hai nút này nếu chúng không đúng thứ tự.Minh hoạ:Dùng phương pháp bubble sort để sắp xếp lại danh sách dưới đây.25 55 45 40 10 90 85 35Bảng sau đây minh hoạ quá trình so sánh và đổi chổ cho lần duyệt đầu tiên i Nodes[i] Nodes[i+1] Kiểm tra Nodes[i] Nodes[i+1] (trước) (trước) nodes[i]>nodes[i+1]? (sau) (sau)0 25 55 Sai ->không đổi chổ 25 551 55 45 Đúng ->đổi chổ 45 55 12 55 40 Đúng ->đổi chổ 40 553 55 10 Đúng ->đổi chổ 10 554 55 90 Sai ->không đổi chổ 55 905 90 85 Đúng ->đổi chổ 85 906 90 35 Đúng ->đổi chổ 35 90Nếu dùng phương pháp bubble sort để sắp xếp danh sách có n nút: • Sau lần duyệt thứ 1, nút lớn nhất được định vị đúng chổ. • Sau lần duyệt thứ 2, nút thứ 2 được định vị đúng chổ. • Sau lần duyệt thứ n-1 thì n nút trong danh sách sẽ được sắp xếp thứ tự.Sự biến đổi của danh sách qua các lần duyệt được mô tả trong bảng dưới đây.lần duyệt Dữ liệuBan đầu 25 55 45 40 10 90 85 351 25 45 40 10 55 85 35 902 25 40 10 45 55 35 85 903 25 10 40 45 35 55 85 904 10 25 40 35 45 55 85 905 10 25 35 40 45 55 85 906 10 25 35 40 45 55 85 907 10 25 35 40 45 55 85 902.1.2 Cài đặt giải thuật bubble sortvoid bubblesort(int nodes[], int n){ int temp, i,j; int doicho=TRUE; for(i=1; iDò tìm trong khoảng vị trí từ 1 đến n-1 để xác định nút nhỏ nhất tại vị trí min1.Đổi chổ hai nút tại vị trí min1 và 1.Lần chọn thứ i:Dò tìm trong khoảng vị trí từ i đến n-i để xác định nút nhỏ nhất tại vị trí mini.Đổi chổ hai nút tại vị trí mini và i.Lần chọn thứ n-2 (lần chọn cuối cùng):Dò tìm trong khoảng từ vị trí n-2 đến n-1 để xác định nút nhỏ nhất tại vị trí minn-2.Đổi chổ hai nút tại vị trí minn-2 và vị trí n-2.Minh hoạ: dùng giải thuật simple selection sort để sắp xếp cho danh sách sau:25 55 45 40 10 90 85 35Lần chọn Dữ liệuBan đầu 25 55 45 40 10 90 85 350 10 55 45 40 25 90 85 351 10 25 45 40 55 90 85 352 10 25 35 40 55 ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu giải thuật Giáo trình cấu trúc dữ liệu giải thuật Sắp xếpGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 318 0 0 -
Hình thành hệ thống điều khiển trình tự xử lý các toán tử trong một biểu thức logic
50 trang 172 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 163 0 0 -
GIỚI THIỆU CHUNG VỀ GIÁO TRÌNH
3 trang 162 0 0 -
Báo cáo thực hành Môn: Công nghệ vi sinh
15 trang 157 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu Bệnh Học Thực Hành: TĨNH MẠCH VIÊM TẮC
8 trang 126 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 124 0 0 -
217 trang 94 0 0
-
THIÊT KÊ CÔNG TRÌNH THEO LÝ THUYÊT NGAU NHIÊN VÀ PHÂN TÍCH ĐỘ TIN CẬY
113 trang 88 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 74 0 0 -
Giáo trình Tin Học: Tổng quan về công nghệ Ethernet
15 trang 74 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 73 0 0 -
49 trang 72 0 0
-
54 trang 70 0 0
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 trang 70 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Phần 1 - ThS. Hoàng Thế Phương
128 trang 67 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 66 0 0