Các toán tìm thuật kiếm - Tin học (Tin học căn bản) | Trường Đại học Nam Cần Thơ

Các toán tìm thuật kiếm - Tin học (Tin học căn bản) | Trường Đại học Nam Cần Thơ được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

Các toán tìm thuật kiếm
1, Tìm kiếm tuần tự
-Duyệt mảng (dãy số) để tìm
For i:=1 to N do
If a[i]=X then <trả lời yêu cầu>;
Break;exit;
2, Tìm kiếm nhị phân
Function TKNP(X, L, R:longint);boolean;
Var giua:longint;
Begin
While L<R do
Begin
Giua:=(L+R) div 2;
If a[giua]=X then exit(true);
If a[giua]>X then R:=giua-1;
Else L:=giua+1;
End;
Exit(false);
End;
3, Tìm vị trí của X xa nhất về bên phải
Function TKNP2(X,L,R:longint);longint;
Var giua:longint;
Find:boolean;
Begin
Find:=false;
While L<R do
Begin
Giua:=(L+R) div 2;
If a[giua]>=X then
Begin
If X=a[giua] then
Begin
find:=true;
TKNP2:=giua;
L:=giua+1;
End
Else R:=giua-1;
End;
If find=false then
Exit(0);
End;
4, Tìm vị trí của X xa nhất về bên trái
Function TKNP3(X,L,R:longint);longint;
Var giua:longint;
Find:boolean;
Begin
Find:=false;
While L<R do
Begin
Giua:=(L+R) div 2;
If a[giua]<=X then begin
If X=a[giua] then begin
find:=true;
TKNP3:=giua;
End;
R:=giua-1;
End;
Else L:=giua+1;
End;
If find=false then
Exit(0);
End;
| 1/4

Preview text:

Các toán tìm thuật kiếm 1, Tìm kiếm tuần tự
-Duyệt mảng (dãy số) để tìm For i:=1 to N do If a[i]=X then ; Break;exit; 2, Tìm kiếm nhị phân
Function TKNP(X, L, R:longint);boolean; Var giua:longint; Begin While LBegin Giua:=(L+R) div 2; If a[giua]=X then exit(true);
If a[giua]>X then R:=giua-1; Else L:=giua+1; End; Exit(false); End;
3, Tìm vị trí của X xa nhất về bên phải
Function TKNP2(X,L,R:longint);longint; Var giua:longint; Find:boolean; Begin Find:=false; While LBegin Giua:=(L+R) div 2; If a[giua]>=X then Begin If X=a[giua] then Begin find:=true; TKNP2:=giua; L:=giua+1; End Else R:=giua-1; End; If find=false then Exit(0); End;
4, Tìm vị trí của X xa nhất về bên trái
Function TKNP3(X,L,R:longint);longint; Var giua:longint; Find:boolean; Begin Find:=false; While LBegin Giua:=(L+R) div 2; If a[giua]<=X then begin If X=a[giua] then begin find:=true; TKNP3:=giua; End; R:=giua-1; End; Else L:=giua+1; End; If find=false then Exit(0); End;