Tải bản đầy đủ (.pdf) (7 trang)

Bài giảng Cấu trúc dữ liệu và giải thuật (Data structures and Algorithms): Chương 3 - Ngô Công Thắng - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (138.77 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

CH

ƯƠ

NG 3



S

P X

P VÀ TÌM KI

M NÂNG CAO


GV. Ngô Công Th

ng



B

môn Công ngh

ph

n m

m


Khoa Công ngh

thông tin


Website: dse.vnua.edu.vn/ncthang



Email:



N

i dung Ch

ươ

ng 3



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

1. S

p x

ế

p nhanh (Quick Sort)



1.1. Ph

ươ

ng pháp



• S

p

x

ế

p

nhanh

(quick sort) còn

đượ

c

s

p

x

ế

p phân



đ

o

n (partition sort

)

.


Ý t

ưở

ng thu

t tốn:



– Ch

n ng

u nhiên m

t ph

n t

x.



– Duy

t t

bên trái m

ng cho t

i khi có m

t ph

n t


a

<sub>i</sub>

>

=

x



– Sau

đ

ó duy

t t

bên ph

i m

ng cho t

i khi có m

t


ph

n t

aj

=

<x



Đổ

i ch

a

<sub>i</sub>

và a

<sub>j</sub>




– Ti

ế

p t

c duy

t và

đổ

i ch

cho t

i khi 2 phía g

p nhau.


Ngơ Cơng Thắng Bài giảng Cấu trúc dữ liệu và giải thuật 2 - Chương 03 3.3


1.1. Ph

ươ

ng pháp (

<i>ti</i>

<i>ế</i>

<i>p</i>

)



• K

ế

t qu

m

ng

đượ

c

chia thành 2 ph

n:



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Th

t

c s

p x

ế

p nhanh



Procedure Q_sort(L,R);


1) If L>=R then return;


2) i:=L; j:=R ; k:=(L+R) div 2;


3) x:=a[k];



4) Repeat



While a[i] <x Do i:=i+1;


While a[j] >x Do j:=j-1;


If i<j then a[i]

a[j]


Until i=j



5) Call Q_sort(L,j-1); { Th

c hi

n trên n

a <x }


6) Call Q_sort(j+1,R); { Th

c hi

n trên n

a >x }


Return



Ngô Công Thắng Bài giảng Cấu trúc dữ liệu và giải thuật 2 - Chương 03 3.5


1.2.

Đ

ánh giá




Ng

ườ

i ta

đ

ã ch

ng minh

đượ

c th

i gian trung



bình th

c hi

n gi

i thu

t là:


T

<sub>tb</sub>

= O(nlog

<sub>2</sub>

n)



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

2. S

p x

ế

p vun

đố

ng (Heap Sort)



2.1. Ph

ươ

ng pháp



M

t cây nh

phân có chi

u cao h

đượ

c g

i là



đố

ng khi:



Là cây nh

phân hoàn ch

nh mà các nút lá

m

c



h-1 ph

i n

m phía bên trái.



Khố

nút cha bao gi

c

ũ

ng l

n h

ơ

n khoá

nút



con.



Ngô Công Thắng Bài giảng Cấu trúc dữ liệu và giải thuật 2 - Chương 03 3.7


2. S

p x

ế

p vun

đố

ng (Heap Sort)



2.1. Ph

ươ

ng pháp



Thu

t tốn s

p x

ế

p vun

đố

ng chia làm 2 giai



đ

o

n.




</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5></div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6></div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

- L

p l

i các b

ướ

c t

ươ

ng t

cho các cây còn l

i.



Cu

i cùng ta thu

đượ

c dãy

đ

ã s

p là s=(11, 23, 42, 58, 65,


74)



* Gi

i thu

t vun

đố

ng:



- M

t lá coi nh

ư

cây con là m

t

đố

ng.



- Thu

t toán ti

ế

n hành t

đ

áy lên: Chuy

n

đổ

i thành

đố

ng


cho m

t cây con mà cây con trái và cây con ph

i c

a g

c

đ

ã


là m

t

đố

ng.



Cây nh

phân hồn ch

nh có n nút thì v

i ch

s

[n/2] tr

lên


có th

là nút cha: [n/2], [n/2 ]-1, . . . , 1.



Ngô Công Thắng Bài giảng Cấu trúc dữ liệu và giải thuật 2 - Chương 03 3.13


<b>a) Th</b>

<b>ủ</b>

<b> t</b>

<b>ụ</b>

<b>c vun </b>

<b>đố</b>

<b>ng:</b>



<b>Ch</b>

<b>ỉ</b>

<b>nh lý cây nh</b>

<b>ị</b>

<b> phân con hoàn ch</b>

<b>ỉ</b>

<b>nh g</b>

<b>ố</b>

<b>c i trên cây nh</b>

<b>ị</b>



<b>phân có n nút </b>

<b>để</b>

<b> tr</b>

<b>ở</b>

<b> thành “</b>

<b>đố</b>

<b>ng” v</b>

<b>ớ</b>

<b>i </b>

<b>đ</b>

<b>i</b>

<b>ề</b>

<b>u ki</b>

<b>ệ</b>

<b>n cây con </b>


<b>trái và cây con ph</b>

<b>ả</b>

<b>i có g</b>

<b>ố</b>

<b>c là 2i và 2i+1 </b>

<b>đ</b>

<b>ã là </b>

<b>đố</b>

<b>ng.</b>



<b>Procedure ADJUST(i,n)</b>


<b>1. { Kh</b>

<b>ở</b>

<b>i </b>

<b>đầ</b>

<b>u }</b>



<b>Key:=K[i]; j:=2*i;</b>




</div>

<!--links-->

×