From 2f674dc80f0382f1c3178f435714960734dc9d3c Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sat, 6 Jun 2020 21:33:13 +0700 Subject: Reorganize stuff from secondary school --- "2ndary/12/TP-ThanhHo\303\241-2009/sortnfind.pas" | 83 +++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 "2ndary/12/TP-ThanhHo\303\241-2009/sortnfind.pas" (limited to '2ndary/12/TP-ThanhHoá-2009/sortnfind.pas') diff --git "a/2ndary/12/TP-ThanhHo\303\241-2009/sortnfind.pas" "b/2ndary/12/TP-ThanhHo\303\241-2009/sortnfind.pas" new file mode 100644 index 0000000..52e8d6b --- /dev/null +++ "b/2ndary/12/TP-ThanhHo\303\241-2009/sortnfind.pas" @@ -0,0 +1,83 @@ +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. -- cgit 1.4.1