1
0
Fork 0
cp/2ndary/12/TP-ThanhHoá-2009/sortnfind.pas

84 lines
1.2 KiB
Plaintext

unit sortnfind;
interface
type
intar = array of smallint;
procedure qsort(var a : intar);
function binin(
a: intar;
x: smallint
): boolean;
implementation
procedure qsort(var a : intar);
procedure sort(l, r: longint);
var
i, j, x, y: longint;
begin
i := l;
j := r;
x := a[(l + r) div 2];
repeat
while a[i] < x do
inc(i);
while x < a[j] do
dec(j);
if i <= j then
begin
y := a[i];
a[i] := a[j];
a[j] := y;
inc(i);
j := j - 1
end
until i > j;
if l < j then
sort(l, j);
if i < r then
sort(i, r)
end;
begin
sort(0, length(a) - 1)
end;
function binin(
a: intar;
x: smallint
): boolean;
var
l, h, mid: word;
begin
l := 0;
h := length(a) - 1;
while l <= h do
begin
mid := (l + h) div 2;
if x = a[mid] then
exit(true)
else if x < a[mid] then
h := mid - 1
else
l := mid + 1
end;
binin := false
end;
end.