CÁC GI I THU T
TÌM KI M
1
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 tuy n tính ế
m nh pn.
Đ đ n gi n cho vi c minh h a, ta đ c t nh sau: ơ ư
T p d li u đ c l u tr dãy s ượ ư a , a , ... ,a .
Gi s ch n c u trúc d li u m ng đ l u tr dãy s y ư
trong b nh chính, có khai báo: int a[N];
Khoá c n tìmx, đ c khai báo nh sau: ượ ư int x;
2
a1a2a3a4a5 an-1 aN
Ch a ư
h t ế
m ng
3. Tìm ki m tuy n tínhế ế
Ý t ng ưở
Ti n 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 đ c ph n t ế ượ
khóa c n tìm, ho c đã tìm h t m ng mà không th y ế x.
Minh h am x =10
Minh h am x =25
3
7 5 12 41 10 32 13 9 15 3
12345678910
7 5 12 41 10 32 13 9 15 3
12345678910
10
10
25
Ch a ư
h t ế
m ng
Đã tìm
th y t i
v trí 5
Đã h t ế
m ng
Gi i thu t
B c 1:ướ
i=1;//b tđ ut ph nt đ utiênc a
dãy
B c 2:ướ
Sosánha[i]v ix,có2kh năng:
a[i]=x:Tìmth y.D ng
a[i]!=x:SangB c3.ướ
B c 3ướ :
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.D ngế ế
Ng cl i:L pl iB c2.ư ướ
4
Cài đ t
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
}
5