var a:array[1..1000000] of longint;
n,i,k,dau,giua,cuoi:longint;
begin
readln(n,k);for i:=1 to n do read(a[i]);
dau:= 1; cuoi:= n; while dau <= cuoi do begin giua:= (dau+cuoi) div 2; if k = a[giua] then begin writeln(giua); break; end; else if k < a[giua] then cuoi:= giua -1 else dau:= giua+1; end;if dau > cuoi then writeln(k, ‘ khong có trong day’);
end.
fine!
tìm kiếm nhị phân là 1 trong những bài toán rất khó trong pascal
uses crt;
const fi='timkiemnp.inp';
fo='timkiemnp.out';
var f1,f2:text;
m,d,c,k,n,dem,i,kt:integer;
a:array[1..100]of integer;
begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
for i:=1 to n do write(a[i],' ');
writeln;
write('nhap so can tim k='); readln(k);
{------------------------xu-ly-------------------------}
d:=1;
c:=n;
repeat
m:=(d+c) div 2;
if a[m]=k then begin
writeln('co tai vi tri thu:',m);
break;
end
else if k<a[m]then c:=m-1
else d:=m+1;
until d>c;
if d>c then writeln('ko co');
close(f1);
close(f2);
readln;
end.