Tìm kiếm tuyến tính

Một phần của tài liệu Giáo trình cấu trúc dữ liệu và giải thuật (Trang 106 - 108)

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

Một phần của tài liệu Giáo trình cấu trúc dữ liệu và giải thuật (Trang 106 - 108)

Tải bản đầy đủ (PDF)

(186 trang)