1. Trang chủ
  2. » Cao đẳng - Đại học

Phân tích và thiết kế thuật toán _ Thanh Huyền_sptn

13 229 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 0,93 MB

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

Nội dung

Thuật toán sắp xếp hòa lẫn merga sort trong Phân tích và thiết kế thuật toánBao gồm: Ý tưởng, thuật toán, ví dụ, thủ tục, độ phức tạp.1. Ý tưởngSắp xếp trộn (Merge Sort) là một giải thuật sắp xếp dựa trên giải thuật Chia để trị (Divide and Conquer).Để sắp xếp một mảng Astart...end, Chúng ta sẽ chia mảng lớn thành những mảng con nhỏ hơn bằng cách chia đôi mảng lớn và chúng ta tiếp tục chia đôi các mảng con cho tới khi mảng con nhỏ nhất chỉ còn 1 phần tử.

Trang 1

Merge Sort

Thuật toán sắp xếp hòa nhập/ hòa lẫn

Nguyễn Thị Thanh Huyền Lớp SP Tin K49

Trường ĐHSP Thái Nguyên

Trang 2

ý tưởng

Thuật toán

Ví dụ Thủ tục

Độ phức tạp

1.

2

3

4

5

MERGE SORT

Sắp xếp hòa nhập/ hòa lẫn

Trang 3

 Sắp xếp trộn (Merge Sort) là một giải thuật sắp xếp dựa trên giải

thuật Chia để trị (Divide and Conquer)

 Để sắp xếp một mảng A[start end], Chúng ta sẽ chia mảng lớn

thành những mảng con nhỏ hơn bằng cách chia đôi mảng lớn và

chúng ta tiếp tục chia đôi các mảng con cho tới khi mảng con nhỏ

nhất chỉ còn 1 phần tử

1 Ý tưởng

Trang 4

 Sau đó chúng ta sẽ tiến hành so sánh 2 mảng con có cùng mảng cơ

sở (khi chúng ta chia đôi mảng lớn thành 2 mảng con thì mảng lớn

đó chúng ta gọi là mảng cơ sở của 2 mảng con đó) khi so sánh

chúng sẽ vừa sắp xếp vừa ghép 2 mảng con đó lại thành mảng cơ

sở, chúng ta tiếp tục so sánh và ghép các mảng con lại đến khi còn

lại mảng duy nhất thì đó là mảng đã được sắp xếp

1 Ý tưởng

Trang 5

 Dãy chỉ gồm 1 phần tử được coi là đã sắp xếp tăng dần

 Giả sử cần sắp xếp dãy a[i j] ta quy về việc sắp xếp 2 dãy con

a[i k] và a[k+1 j] với k nằm ở giữa i và j ( k=(i+j) div 2), sauđó ta

hòa nhập 2 dãy đã được sắp xếp thành dãy được sắp xếp

2 Thuật toán

Trang 6

Thuật toán hòa nhập 2 dãy đã được sắp xếp

 Giả sử có 2 dãy được sắp xếp, ta sẽ tìm cách hòa nhập 2 dãy này lại thành 1 dãy được sắp xếp

 Ta sẽ đi so sánh 2 phầntử có giá trị nhỏ nhất của 2 dãy, chọn

phần tử nhỏ hơn đưa ra dãy sắp xếp riêng và loại phần tử đó ra khỏi dãy chứa nó

 Lặp lại quá trình trên cho đến khi 1 trong 2 dãy hết thì chuyển dãy còn lại vào đuôi của dãy sắp xếp

2 Thuật toán

Trang 7

Sắp xếp dãy sau theo phương pháp sắp xếp hòa nhập (Merge Sort )

12 2 8 5 1 6 4 15

3 Ví dụ

12 2 8 5 1 6 4 15

Trang 8

3 Ví dụ

1 2 4 5 6 8 12 15

Trang 9

4 Thủ tục

Thủ tục hòa nhập 2 dãy con a[i k] và a[k+1 j]:

Procedure Merge (var a: mang; I,j,k :integer);

Var c: mang ; t, h, i1, j1: Interger;

Begin

i1:=1; j1:= k+1; t:=I;

While (i1<= k ) and ( j1<= j) do

Begin

If a[i1] < a[j1] then

Begin

c[t] := a[i1]; inc (j1);

End

Else

Begin

c[t] := a[j1]; inc a[j1];

End;

inc (t);

Trang 10

4 Thủ tục

If i1<= k then

For h:= i1 to k do

Begin

c[t] := a[h]; inc (t);

End;

If j1<= j then

For h:= j1 to j do

Begin

c[t] := a[h]; inc (t);

End;

For t:= i to j do a[t] := c[t];

End;

Trang 11

4 Thủ tục

 Thủ tục sắp xếp hòa nhập

Procedure MergeSort ( var a: mang; i,j: Integer);

Var k: Integer;

Begin

If i < j then Begin

k := ( i+j) div 2;

MergeSort ( a, i, k);

MergeSort ( a, k+1, j);

MergeSort ( a, i, k, j);

End;

End;

www.themegallery.com

Trang 12

5 Độ phức tạp

 

Trang 13

LOGO

Ngày đăng: 03/10/2017, 21:07

TỪ KHÓA LIÊN QUAN

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

w