Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
1Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Chuong 4 - Tim Kiem Va Sap Xep

Chuong 4 - Tim Kiem Va Sap Xep

Ratings: (0)|Views: 737|Likes:
Published by thanhthangbmt

More info:

Published by: thanhthangbmt on Jan 03, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See More
See less

01/03/2010

pdf

text

original

 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 4. Tìm ki
 
 m và s
 
 p x
 
 p
Trang 25
Ch
 
ng 4.Tìm ki
m và s
p x
p
4.1.Gi
 
i thi
u
Trong h
u h
t các h
l
u tr
, qu
n lý d
li
u, thao tác tìm ki
m th
 
ng
 
c th
chi
n nh
t

khai thác thông tin:
Ví du:
tra c
u t

n, tìm sách trong th
vi
n...Do các h
th
ng thông tin th
 
ng ph
i l
u tr
m
t kh
i l
 
ng d
li
u
áng k
, nênvi
c xây d
ng các gi
i thu
t cho phép tìm ki
m nhanh s
có ý ngh
  
a r
t l
 
n. N
u d
li
utrong h
th
ng
ã
 
c t
ch
c theo m
t tr
t t
nào
ó, thì vi
c tìm ki
m s
ti
n hànhnhanh chóng và hi
u qu
h
 
n:
d
: các t
trong t

n
 
c s
p x
p theo t
ng v
n, trong m
i v
n l
i
 
c s
px
p theo trình t
alphabet; sách trong th
vi
n
 
c x
p theo ch

Vì th
, khi xây d
ng m
t h
qu
n lý thông tin trên máy tính, bên c
nh các thu
ttoán tìm ki
m, các thu
t toán s
p x
p d
li
u c
ng là m
t trong nh
ng ch
 
c quantâm hàng

u.Hi
n nay
ã có nhi
u gi
i thu
t tìm ki
m và s
p x
p d
 
c xây d
ng, m
c

hi
uqu
c
a t
ng gi
i thu
t còn ph
thu
c vào tính ch
t c
a c
u trúc d
li
u c
th
mà nó tác

ng

n. D
li
u
 
c l
u tr
ch
y
u trong b
nh
 
chính và trên b
nh
 
ph
, do

c
i
m khác nhau c
a thi
t b
l
u tr
, các thu
t toán tìm ki
m và s
p x
p
 
c xây d
ngcho các c
u trúc l
u tr
trên b
nh
 
chính ho
c ph
c
ng có nh
ng

c thù khác nhau.Ch
 
ng này s
trình bày các thu
t toán s
p x
p và tìm ki
m d
li
u
 
c l
u tr
trên b
nh
 
chính- g
i là các gi
i thu
t
 tìm ki
 
 m và s
 
 p x
 
 p n
i
.
4.2.Các gi
i thu
t tìm ki
m
Có 2 gi
i thu
t th
 
ng
 
c áp d
ng

tìm ki
m d
li
u là tìm tuy
n tính và tìmnh
phân.Ð
 
n gi
n trong vi
c trìnhbày gi
i thu
t, bài toán
 
c

c t
nh
sau:T
p d
li
u
 
c l
u tr
là dãy s
: a1, a2,...,aN (l
uý trong ngông ng
C ch
s
m
c

nh ban

u là 0).Gi
s
ch
n c
u trúc d
li
u m
ng

l
u tr
y s
này trong b
nh
 
chính vàkhoá c
n tìm là x, ta có khai báo:int a[N];int x;
4.2.1.m ki
m tuy
n tính– Linear Search (tu
n t
 
- SequentialSearch)
v
Gi
i thu
t
:
Tìm tuy
n tính là m
t k
thu
t tìm ki
m r
t
 
n gi
n và c

n. Thu
t toán ti
nhành so sánh x l
n l
 
t v
 
i ph
n t
th
nh
t, th
hai,... c
a m
ng a cho

n khi g
p
 
cph
n t
có khóa c
n tìm, ho
c
ã tìm h
t m
ng mà không th
y x. Các b
 
c ti
n hành nh
sau:
 B
 
 c 1 (Input):
Nh
p m
ng s
nguyên a và s
nguyên x.
  
 c 2:
i = 1; // b
t

u t
ph
n t

u tiên c
a dãy.
 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 4. Tìm ki
 
 m và s
 
 p x
 
 p
Trang 26
  
 c 3:
So sánh a[i] v
 
i x, có 2 kh
n
ng:
a[i] = x: Tìm th
y. Sang b
 
c 5.
a[i] != x: Sang b
 
c 4.
  
 c 4:
i = i+1;// xét ti
p ph
n t
k
trong m
ng
N
u i > N: H
t m
ng, không tìm th
y. Sang b
 
c 5
Ng
 
c l
i: L
p l
i b
 
c 3.
  
 c 5 (Output):
In ra k
t qu
. K
t thúc thu
t toán.
Ví d
:
Cho dãy s
a:
1228516415
N
u giá tr
c
n tìm là
8
, gi
i thu
t
 
c ti
n hành nh
sau:
i = 1i = 2i = 3D
 
ng:
 In ra k 
 
t qu
.
v
Cài

t:
T
mô t
trên
ây c
a thu
t toán tìm tuy
n tính, có th
cài

t hàm LinearSearch

xác

nh v
trí c
a ph
n t
có khoá x trong m
ng a:
int LinearSearch (int a[], int N, int x) {int i = 0;while ((i<N) && (a[i]!=x )) i ++;if (i==N) return-1;
 // tìm h
t m
ng nh
ng không có x
else return i;
 // a[i] là ph
n t
có khoá x
}
Trong cài

t trên
ây, nh
n th
y m
i l
n l
p c
a vòng l
p while ph
i ti
n thànhki
m tra 2

u ki
n (i<N)-

i
u ki
n biên c
a m
ng– và (a[i]!=x )-

i
u ki
nki
m trachính.Nh
ng th
t s
ch
c
n ki
m tra

u ki
n chính(a[i] !=x),

c
i ti
n cài

t, có th
dùng ph
 
ng pháp "lính canh"-

t thêm m
t ph
n t
có giá tr
x vào cu
i m
ng, nh
v
y b
o

m luôn tìm th
y x trong m
ng, sau
ó d
a vào v
trí tìm th
y

k
t lu
n. Cài
 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 4. Tìm ki
 
 m và s
 
 p x
 
 p
Trang 27

t c
i ti
n sau
ây c
a hàm LinearSearch giúp gi
m b
 
t m
t phép so sánh trong vòngl
p:
int LinearSearch (int a[],int N,int x) {int i = 0;
 // m
ng g
m N ph
n t
t
a[0]..a[N-1]
a[N] = x;
 // thêm ph
n t
th
N+1
while (a[i] != x ) i ++;if (i==N)return-1;
 // tìm h
t m
ng nh
ng không có x
return i;
 // tìm th
y x t
i v
trí i
}
v
Ðánh giá gi
i thu
t:
Có th
 
c l
 
ng

ph
c t
p c
a gi
i thu
t tìm ki
m qua s
l
 
ng các phép sosánh
 
c ti
n hành

tìm ra x. Ta có b
ng phân tích sau:
 
Tr
 
ng h
 
pS
l
n so sánhGi
i thích
T
t nh
t1Ph
n t

u tiên có giá tr
xX
u nh
tN + 1Không có giá tr
x trong m
ngTrung bình(N +1)/2Gi
s
xác su
t các ph
n t
trongm
ng nh
n giá tr
x là nh
nhauV
y gi
i thu
t tìm tuy
n tính có

ph
c t
p tính toán c
p n: T(n) = O(n)
v
Nh
n xét:
Gi
i thu
t tìm tuy
n tính không ph
thu
c vào th
t
c
a các ph
n t
m
ng, dov
y
ây là ph
 
ng pháp t
ng quát nh
t

tìm ki
m trên m
t dãy s
b
t k
.
M
t thu
t toán có th
 
c cài

t theo nhi
u cách khác nhau, k
thu
t cài

t
nh h
 
ng

n t
c

th
c hi
n c
a thu
t toán.
4.2.2.m ki
m nh
phân (Binary Search)
v
Gi
i thu
t:
Ð
i v
 
i nh
ng dãy s

ã có th
t
( gi
s
th
t
t
ng ), các ph
n t
trong dãy cóquan h
a
i -1
a
i
a
i+1
, t

ó k
t lu
n
 
c n
u x > a
i
thì x ch
có th
xu
t hi
n trong
o
n [a
i+1
,a
N
] c
a dãy, ng
 
c l
i n
u x < a
i
thì x ch
có th
xu
t hi
n trong

n [a
1
,a
i-1
]c
a dãy. Gi
i thu
t tìm nh
phân áp d
ng nh
n xét trên
ây

tìm cách gi
 
i h
n ph
m vitìm ki
m sau m
i l
n so sánh x v
 
i m
t ph
nt
trong dãy. Ý t
 
ng c
a gi
i thu
t là t
im
i b
 
c ti
n hành so sánh x v
 
i ph
n t
n
m
 
v
trí gi
a c
a dãy tìm ki
m hi
n hành,d
a vào k
t qu
so sánh này

quy
t

nh gi
 
i h
n dãy tìm ki
m
 
b
 
c k
ti
p là n
atrên hay n
a d
 
i c
a dãy tìm ki
m hi
n hành. Gi
s
dãy tìm ki
m hi
n hành bao g
mcác ph
n t
aleft.. aright, các b
 
c ti
n hành nh
sau:
 B
 
 c 1 (Input):
Nh
p m
ng s
nguyên a và s
nguyên x.
  
 c 2:
left = 1; right = N;// tìm ki
m trên t
t c
các ph
n t
.
  
 c 3:
mid = (left + right)/2;// l
y m
c so sánh
a[mid] = x: Tìm th
y. D
ng

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->