1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu và giải thuật (phần 7) pdf

10 380 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 285,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Merge sort trực tiếp41... Merge sort trực tiếp Đánh giá thuật toán: - Chi phí thực hiện MergeSort là Onlgn - Nhược điểm: Không tận dụng được đặc tính của dãy cần sắp xếp.. Ví dụ: Trường

Trang 1

Merge sort trực tiếp

41

Trang 2

Merge sort trực tiếp

 Đánh giá thuật toán:

- Chi phí thực hiện MergeSort là O(nlgn)

- Nhược điểm: Không tận dụng được đặc tính của

dãy cần sắp xếp Ví dụ: Trường hợp dãy đã có sẵn

thứ tự

-  Thuật toán Merge sort cải tiến: Phương pháp

trộn tự nhiên (Natural Merge sort)

42

Trang 3

Natural Merge sort

 Khái niệm đường chạy (run): Một đường chạy

của dãy a là 1 dãy con không giảm của a Nghĩa

là, đường chạy r = (ai,ai+1,…,aj) phải thỏa điều kiện:

Ví du: Cho dãy a=[12,2,8,5,1,6,4,15] có 5 đường

chạy gồm (12),(2,8),(5),(1,6),(4,15)

Trang 4

Natural Merge sort

 Thuật toán:

- B1: r = 0; // r dùng để đếm số đường chạy

- B2: Tách dãy a=[a1,a2,…,an] thành 2 dãy b,c theo nguyên tắc luân phiên từng đường chạy

- B3: Trộn từng cặp đường chạy của 2 dãy b,c vào a

- B4: Nếu r<=2 thì trở lại bước 2 Ngược lại: Dừng

Trang 5

Natural Merge sort

 Ví dụ: Cho dãy a=[5,1,2,8,4,17,10,12,4,3,24,1,4]

B1:(5);(1,2,8);(4,17);(10,12);(4);(3,24);(1,4) r=7

B2:b=[(5);(4,17);(4);(1,4)]

c=[(1,2,8);(10,12);(3,24)]

B3:a=[1,2,5,8,4,10,12,17,3,4,24,1,4)

B2:b=[(1,2,5,8);(3,4,24)]

c=[(4,10,12,17);(1,4)]

B3:a=[1,2,4,5,8,10,12,17,1,3,4,4,24]

Trang 6

Natural Merge sort

B3:a=[1,2,4,5,8,10,12,17,1,3,4,4,24]

B2: b=[(1,2,4,5,8,10,12,17)]

c=[(1,3,4,4,24)]

B3: a=[1,1,2,3,4,4,4,5,8,10,12,17,24]

(1,1,2,3,4,4,4,5,8,10,12,17,24) r=1  Dừng

Trang 7

Natural Merge sort

 Ưu và nhược điểm:

- Thuật toán trộn tự nhiên tận dụng được các đường chạy tự nhiên của dãy

- Tuy nhiên, trộn tự nhiên đòi hỏi không gian bộ nhớ

để lưu các dãy phụ b, c

- Thuật toán trộn tự nhiên thường ứng dụng trong

các cấu trúc dữ liệu là danh sách liên kết hoặc file

Trang 8

Polyphase Merge sort

 Trộn đa lối cân bằng:

Thay vì thực hiện 2 giai đoạn: Phân phối và trộn như Thuật toán Merge sort thông thường, trộn đa pha cân bằng chỉ cần thực hiện 1 giai đoạn trộn

- Tiết kiệm ½ chi phí

- Cần số lượng bộ nhớ trung gian gấp đôi

Trang 9

Polyphase Merge sort

Ví dụ: a=[ 3,5 ,2,7,12, 8 ,4,15,20, 1,2,8,23 ,7,21,27] Dùng 6 mảng trung gian

B1: Phân phối các run luân phiên vào a1,a2,a3

a1: ( 3,5 );(4,15,20)

a2: ( 2,7,12 );(1,2,8,23)

a3: ( 8 );(7,21,27)

B2: Trộn các run của a1,a2,a3 và luân phiên phân

phối vào b1,b2,b3

Trang 10

Polyphase Merge sort

b1: (2,3,5,7,8,12)

b2: (1,2,4,7,8,15,20,21,23,27)

b3: NULL

Run =2 Tiếp tục trộn b1,b2,b3 vào ngược lại a1,a2,a3

a1: 1,2,2,3,4,5,7,7,8,8,12,15,20,21,23,27

a2:NULL

a3: NULL

 Run =1 Kết thúc

Ngày đăng: 09/07/2014, 17:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w