Binary search: Difference between revisions

Line 1,618:
350 IF BO<=UP THEN LET SEARCH=K
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}}==
Anonymous user