Data update
This commit is contained in:
parent
07c7092a52
commit
61b93a2cd1
313 changed files with 6160 additions and 346 deletions
70
Task/Binary-search/Modula-2/binary-search.mod2
Normal file
70
Task/Binary-search/Modula-2/binary-search.mod2
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
MODULE BinarySearch;
|
||||
|
||||
FROM STextIO IMPORT
|
||||
WriteLn, WriteString;
|
||||
FROM SWholeIO IMPORT
|
||||
WriteInt;
|
||||
|
||||
TYPE
|
||||
TArray = ARRAY [0 .. 9] OF INTEGER;
|
||||
|
||||
CONST
|
||||
A = TArray{-31, 0, 1, 2, 2, 4, 65, 83, 99, 782}; (* Sorted data *)
|
||||
|
||||
VAR
|
||||
X: INTEGER;
|
||||
|
||||
PROCEDURE DoBinarySearch(A: ARRAY OF INTEGER; X: INTEGER): INTEGER;
|
||||
VAR
|
||||
L, H, M: INTEGER;
|
||||
BEGIN
|
||||
L := 0; H := HIGH(A);
|
||||
WHILE L <= H DO
|
||||
M := L + (H - L) / 2;
|
||||
IF A[M] < X THEN
|
||||
L := M + 1
|
||||
ELSIF A[M] > X THEN
|
||||
H := M - 1
|
||||
ELSE
|
||||
RETURN M
|
||||
END
|
||||
END;
|
||||
RETURN -1
|
||||
END DoBinarySearch;
|
||||
|
||||
PROCEDURE DoBinarySearchRec(A: ARRAY OF INTEGER; X, L, H: INTEGER): INTEGER;
|
||||
VAR
|
||||
M: INTEGER;
|
||||
BEGIN
|
||||
IF H < L THEN
|
||||
RETURN -1
|
||||
END;
|
||||
M := L + (H - L) / 2;
|
||||
IF A[M] > X THEN
|
||||
RETURN DoBinarySearchRec(A, X, L, M - 1)
|
||||
ELSIF A[M] < X THEN
|
||||
RETURN DoBinarySearchRec(A, X, M + 1, H)
|
||||
ELSE
|
||||
RETURN M
|
||||
END
|
||||
END DoBinarySearchRec;
|
||||
|
||||
PROCEDURE WriteResult(X, IndX: INTEGER);
|
||||
BEGIN
|
||||
WriteInt(X, 1);
|
||||
IF IndX >= 0 THEN
|
||||
WriteString(" is at index ");
|
||||
WriteInt(IndX, 1);
|
||||
WriteString(".")
|
||||
ELSE
|
||||
WriteString(" is not found.")
|
||||
END;
|
||||
WriteLn
|
||||
END WriteResult;
|
||||
|
||||
BEGIN
|
||||
X := 2;
|
||||
WriteResult(X, DoBinarySearch(A, X));
|
||||
X := 5;
|
||||
WriteResult(X, DoBinarySearchRec(A, X, 0, HIGH(A)));
|
||||
END BinarySearch.
|
||||
Loading…
Add table
Add a link
Reference in a new issue