Ch đ c a tu n
Các thu t toán tìm ki mế
Tìm ki mế tu n t
S d ng lính gác
Tìm ki mế t s p x pế
Tìm ki mế tu n t (linear search)
Thăm t t c các f n t c a m ng b t đ u t f n
t đ u tn.
So sánh key v i m i f n t c a list ho c m ng.
N uế f n t tìm ki mế đ cượ tìm th y, ch s c a
nó(v trí trong m ng) đ cượ tr v.N um ki m ế ế
kng tnhng t tr v -1.
L u ý r ng tìm ki m tu n t kng đòi h i c ư ế
f n t c a list f i đ c đ t theo 1 th t đ c bi t ượ
nào.
Sequential Search (tìm ki m tu n t )ế
int LinearSearch (T M[], int N, T X){
int k = 0;
while (M[k] != X && k < N)
k++;
if (k < N) return (k);
return (-1);
}
Ví d
#include<stdio.h>
int sequential_search(char* items,int count,char key)
{
Register int t;
for(t=0;t<count;++t)
If(key == items[t]) return t;
return-1;/*không tìm th y*/
}
int main(void){
Char *str = "asdf";
Int index=sequential_search(str,4,'s');
printf("%d",index);
}
Lính canh (Sentinel)
Lưu ý r ng m i l n l p đòi h i 2 đi u ki n
đ cượ ki m tra và 1 câu l nh đ cượ thi
hành.
Chúng ta có th tránh ki m tra cu i m ng
trong m i b cướ l p b ng cách chèn 1 giá
tr đích (giá tr mà ta c n tìm) nh là 1 f ư n
t ”lính canh” vào cu i c a m ng.
Ta đt nó t i v trí n và làm theo thu t toán
sau: