2.1. Ý tưởng giải thuật
Là kỹ thuật tìm kiếm rất đơn giản và cổ điển. Nội dung có thể tóm tắt như sau:
Bắt đầu từ bản ghi thứ nhất, lần lượt so sánh khóa tìm kiếm với khóa tương ứng của các bản ghi trong bảng, cho tới khi tìm được bản ghi mong muốn hoặc đã hết bảng mà chưa thấy.
2.2. Mô tả giải thuật.
Input:
105
- Các khóa được đánh số từ K0, K1,…Ki,…Kn-1 - X là khóa tìm kiếm
Process:
Bước 1: Khởi gán
- Bổ sung khóa X vào cuối dãy khóa (để công việc tìm kiếm luôn thấy X)
- Khởi gán giá trị 0 cho biến chỉ số i
Bước 2: Tìm khóa X trong dãy khóa K
Lặp lại công việc sau cho đến khi tìm thấy X So sánh khóa X với từng khóa Ki
Bước 3: Xét trường hợp tìm thấy hoặc không tìm thấy
Nếu i<n thì return (i) Ngược lại thì return(-1)
Output: i là chỉ số của khóa có giá trị trùng với X, hoặc -1 nếu không tìm
thấy X
2.3. Cài đặt giải thuật.
int Sequen-Search(int K[], int n, int X) { int i=0;
K[n]=X;
While (X != K[i])
i++;
if (i<n) return (i); else return (-1); }
2.4. Biểu diễn giải thuật.
Mô tả giải thuật với dãy khóa:
K: 6 4 9 3 8 2 7 5 n = 8; tìm kiếm với x=2 và x =1 Tìm với x=2 Bổ sung K[n]=x; Dãy khóa K 6 4 9 3 8 2 7 5 2 Chỉ số 0 1 2 3 4 5 6 7 8=n Bắt đầu i=0 i I i i i i K[i]=x;
K[i] ≠ x; tăng I cho tới khi K[i]=x; return (i=5): Tìm thấy
Tìm với x=1 Bổ sung K[n]=x;
106
Chỉ số 0 1 2 3 4 5 6 7 8=n
Bắt đầu i=0 i i I i i i i i i
K[i] ≠ x; tăng i cho tới khi K[i]=x; Vì i=n return (-1): Không tìm thấy