- Trình bày được giải thuật, cài đặt được giải thuật và đánh giá được độ phức tạp của giải thuật tìm kiếm tuyến tính, tìm kiếm nhị phân.
- Giải được các bài tốn sử dụng giải thuật tìm kiếm tuyến tính, tìm kiếm nhị phân. - Thực hiện các thao tác an tồn với máy tính.
Nội dung chính:
Tìm kiếm một phần tử nào đó của một tập đối tượng theo một tiêu chí đề ra là bài tốn phổ biến trong tin học.
Ở đây ta xét tới một dạng đơn giản của nó:
“cho một vec tơ A bao gồm n phần tử, có giá trị là các số khác nhau : A[1], A[2], A[3],…, A[n]”
“cho một số X, hãy tìm xem có phần tử nào của A mà giá trị của nó bằng X khơng” Tìm kiếm sẽ “được thỏa” khi có, hoặc “khơng thỏa” khi khơng có phần tử nào có giá trị bằng X
1.Tìm kiếm tuyến tínhMục tiêu: Mục tiêu:
- Trình bày được giải thuật, cài đặt được giải thuật tìm kiếm tuyến tính; - Giải được các bài tốn sử dụng giải thuật tìm kiếm tuyến tính;
1.1.Giới thiệu phương pháp
Tìm tuyến tính là một kỹ thuật tìm kiếm rất đơn giản và cổ điển. Thuật toán tiến hành so sánh x lần lượt với phần tử thứ nhất, thứ hai, ... của dãy khóa cho đến khi gặp
được phần tử có khóa cần tìm, hoặc đã tìm hết mảng mà không thấyx.
1.2.Giải thuật
Các bước thực hiện ý tưở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.
Cài đặt thuật toán:
Function TKTT(A,n,X):Integer;
Begin
i:=1; A[n+1]:=X;
While A[i] < > X do i:=i+1; {Tìm thấy hay không} if i=n+1 then TKTT:=0 else TKTT:=i;
End;
1.3.Ví dụ minh họa
Cho dãy số a:
12 2 8 5 1 6 4 15 Nếu giá trị cần tìm là 8, giải thuật được tiến hành như sau :
i = 1
i = 2
Dừng.