Binary search: Difference between revisions
Content added Content deleted
(→{{header|ASIC}}: Added) |
(→{{header|Minimal BASIC}}: Added) |
||
Line 1,618: | Line 1,618: | ||
350 IF BO<=UP THEN LET SEARCH=K |
350 IF BO<=UP THEN LET SEARCH=K |
||
360 END DEF</lang> |
360 END DEF</lang> |
||
==={{header|Minimal BASIC}}=== |
|||
{{trans|ASIC}} |
|||
{{works with|Commodore BASIC|3.5}} |
|||
{{works with|Nascom ROM BASIC|4.7}} |
|||
<lang gwbasic> |
|||
10 REM Binary search |
|||
20 LET N = 10 |
|||
30 FOR I = 1 TO N |
|||
40 READ A(I) |
|||
50 NEXT I |
|||
60 REM Sorted data |
|||
70 DATA -31, 0, 1, 2, 2, 4, 65, 83, 99, 782 |
|||
80 LET X = 2 |
|||
90 GOSUB 500 |
|||
100 GOSUB 200 |
|||
110 LET X = 5 |
|||
120 GOSUB 500 |
|||
130 GOSUB 200 |
|||
140 END |
|||
190 REM Print result |
|||
200 PRINT X; |
|||
210 IF I1 < 0 THEN 240 |
|||
220 PRINT "is at index"; I1 |
|||
230 RETURN |
|||
240 PRINT "is not found" |
|||
250 RETURN |
|||
460 REM Binary search algorithm |
|||
470 REM N - number of elements |
|||
480 REM X - searched element |
|||
490 REM Result: I1 - index of X |
|||
500 LET L = 0 |
|||
510 LET H = N-1 |
|||
520 LET F = 0 |
|||
530 LET M = L |
|||
540 IF L > H OR F <> 0 THEN 640 |
|||
550 LET M = L+INT((H-L)/2) |
|||
560 IF A(M) >= X THEN 590 |
|||
570 LET L = M+1 |
|||
580 GOTO 540 |
|||
590 IF A(M) <= X THEN 620 |
|||
600 LET H = M-1 |
|||
610 GOTO 540 |
|||
620 LET F = 1 |
|||
630 GOTO 540 |
|||
640 IF F = 0 THEN 670 |
|||
650 LET I1 = M |
|||
660 RETURN |
|||
670 LET I1 = -1 |
|||
680 RETURN |
|||
</lang> |
|||
=={{header|Batch File}}== |
=={{header|Batch File}}== |