Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Slide bài giảng cấu trúc dữ liệu
PREMIUM
Số trang
95
Kích thước
2.8 MB
Định dạng
PDF
Lượt xem
1182

Slide bài giảng cấu trúc dữ liệu

Nội dung xem thử

Mô tả chi tiết

ðại Học Sư Phạm Tp. Hồ Chí Minh

Chương 2: Tìm kiếm & Sắp xếp

CẤU TRÚC DỮ LIỆU 1

2

Thông tin giảng viên

• LƯƠNG TRẦN HY HIẾN

• Bộ Môn Tin Học

• Khoa Toán – Tin học

• Phone: 0989 366 990

• Email: [email protected]

3

Tìm kiếm & Sắp xếp

Muïc tieâu:

Giôùi thieäu moät soá thuaät toaùn tìm kieám vaø saép xeáp noäi.

Phaân tích, ñaùnh giaù ñoä phöùc taïp cuûa caùc giaûi thuaät tìm

kieám, saép xeáp.

Noäi dung:

Nhu caàu tìm kieám vaø saép xeáp döõ lieäu trong moät heä

thoáng thoâng tin.

Caùc giaûi thuaät tìm kieám noäi.

Caùc giaûi thuaät saép xeáp noäi.

4

Caùc giaûi thuaät

tìm kieám noäi

• Tìm tuần tự

• Tìm nhị phân

Tìm kiếm

5

Caùc giaûi thuaät tìm kieám noäi

Baøi toaùn: Tìm vò trí xuaát hieän cuûa phaàn töû coù

giaù trò x treân danh saùch ñaëc a

Taäp döõ lieäu ñöôïc löu tröõ laø daõy soá a1

, a2

, ... ,aN

int a[N];

Khoaù caàn tìm laø x

int x;

6

Tìm kieám tuaàn töï

Böôùc 1: i = Vò trí ñaàu;

Böôùc 2: Neáu a[i] = x : Tìm thaáy. Döøng, vò trí

xuaát hieän: i

Böôùc 3 : i = Vò trí keá(i);// xeùt tieáp phaàn töû keá

trong maûng

Böôùc 4: Neáu i >Vò trí cuoái: //Heát maûng

Khoâng tìm thaáy. Döøng.

Ngöôïc laïi: Laëp laïi Böôùc 2.

7

Tìm kieám tuaàn töï

Ví duï: Cho daõy soá a

12 2 8 5 1 6 4 15

Giaù trò caàn tìm: 8

i = 1

8

Tìm kieám tuaàn töï

• i = 2

• i = 3

9

Tìm kieám tuaàn töï

int LinearSearch(int a[], int N, int x)

{

for (int i=0; (i<N)&&(a[i]!=x ); i++);

if (i<N)

return i; // a[i] laø phaàn töû coù khoaù x

return -1; // tìm heát maûng nhöng khoâng coù x

}

10

Tìm kieám tuaàn töï

Caûi tieán caøi ñaët: duøng phöông phaùp “ñặt lính

canh”

– Ñaët theâm moät phaàn töû coù giaù trò x vaøo cuoái maûng

– Baûo ñaûm luoân tìm thaáy x trong maûng

– Sau ñoù döïa vaøo vò trí tìm thaáy ñeå keát luaän.

11

Tìm kieám tuaàn töï

int LinearSearch(int a[], int N, int x)

{

// maûng goàm N phaàn töû töø a[0]..a[N-1]

a[N] = x; // theâm lính canh vaøo cuoái daõy

for (int i=0; (a[i]!=x); i++);

if (i<N)

return i; // a[i] laø phaàn töû coù khoaù x

return -1; // tìm heát maûng nhöng khoâng coù x

}

12

Tìm kieám tuaàn töï

Ñaùnh giaù giaûi thuaät:

Vaäy giaûi thuaät tìm tuaàn töï coù ñoä phöùc taïp

tính toaùn caáp n: T(n) = O(n)

13

Tìm kieám tuaàn töï

Nhaän xeùt:

– Giaûi thuaät tìm tuyeán tính khoâng phuï thuoäc vaøo

thöù töï cuûa caùc phaàn töû trong danh saùch, do vaäy

ñaây laø phöông phaùp toång quaùt nhaát ñeå tìm kieám

treân moät danh saùch baát kyø.

– Moät thuaät toaùn coù theå ñöôïc caøi ñaët theo nhieàu

caùch khaùc nhau, kyõ thuaät caøi ñaët aûnh höôûng ñeán

toác ñoä thöïc hieän cuûa thuaät toaùn.

14

Tìm kieám nhò phaân

Ñoái vôùi nhöõng daõy ñaõ sắp thöù töï (giaû söû thöù töï

taêng), caùc phaàn töû trong daõy coù quan heä

ai -1 ≤ ai ≤ ai+1

Neáu x > ai

thì x chæ coù theå xuaát hieän trong

ñoaïn [ai+1 ,aN

] cuûa daõy

Neáu x < ai

thì x chæ coù theå xuaát hieän trong

ñoaïn [a1 ,ai-1] cuûa daõy

15

Tìm kieám nhò phaân

YÙ töôûng cuûa giaûi thuaät laø taïi moãi böôùc tieán

haønh so saùnh x vôùi phaàn töû naèm ôû vò trí giöõa

cuûa daõy tìm kieám hieän haønh, döïa vaøo keát quaû

so saùnh naøy ñeå quyeát ñònh giôùi haïn daõy tìm

kieám ôû böôùc keá tieáp laø nöûa treân hay nöûa döôùi

cuûa daõy tìm kieám hieän haønh

16

Tìm kieám nhò phaân

Böôùc 1: left = VTÑ; right = VTC;

Böôùc 2: Trong khi left ≤ right laëp: //ñoaïn tìm kieám chöa roãng

Böôùc 21: mid = (left+right)/2; // laáy moác so saùnh

Böôùc 22: Neáu a[mid] = x: //Tìm thaáy.

Döøng, vò trí xuaát hieän: mid

Böôùc 23: Neáu a[mid] > x: //tìm x trong daõy con aleft .. amid -1

right = mid - 1;

Ngöôïc laïi //tìm x trong daõy con amid +1 .. aright

left = mid + 1;

//Heát laëp

Böôùc 3: Döøng, khoâng tìm thaáy.

17

Tìm kieám nhò phaân

Ví duï: Cho daõy soá a goàm 8 phaàn töû:

1 2 4 5 6 8 12 15

Giaù trò caàn tìm laø 8

18

Tìm kieám nhò phaân

• left = 1, right = 8, mid = 4

Tải ngay đi em, còn do dự, trời tối mất!