Binary search: Difference between revisions
Content added Content deleted
(→{{header|Minimal BASIC}}: Corrected. Minimal BASIC does not have the operators OR, AND, NOT.) |
(→{{header|GW-BASIC}}: Added.) |
||
Line 1,574: | Line 1,574: | ||
return -1 |
return -1 |
||
end function</syntaxhighlight> |
end function</syntaxhighlight> |
||
=== {{header|GW-BASIC}} === |
|||
{{trans|ASIC}} |
|||
{{works with|BASICA}} |
|||
<syntaxhighlight lang="gwbasic"> |
|||
10 REM Binary search |
|||
20 DIM A(10) |
|||
30 N% = 10 |
|||
40 FOR I% = 0 TO 9: READ A(I%): NEXT I% |
|||
50 REM Sorted data |
|||
60 DATA -31, 0, 1, 2, 2, 4, 65, 83, 99, 782 |
|||
70 X = 2: GOSUB 500 |
|||
80 GOSUB 200 |
|||
90 X = 5: GOSUB 500 |
|||
100 GOSUB 200 |
|||
110 END |
|||
190 REM Print result |
|||
200 PRINT X; |
|||
210 IF INDX% >= 0 THEN PRINT "is at index"; STR$(INDX%);"." ELSE PRINT "is not found." |
|||
220 RETURN |
|||
460 REM Binary search algorithm |
|||
470 REM N% - number of elements |
|||
480 REM X - searched element |
|||
490 REM Result: INDX% - index of X |
|||
500 L% = 0: H% = N% - 1: FOUND% = 0 |
|||
510 WHILE (L% <= H%) AND NOT FOUND% |
|||
520 M% = L% + (H% - L%) \ 2 |
|||
530 IF A(M%) < X THEN L% = M% + 1 ELSE IF A(M%) > X THEN H% = M% - 1 ELSE FOUND% = -1 |
|||
540 WEND |
|||
550 IF FOUND% = 0 THEN INDX% = -1 ELSE INDX% = M% |
|||
560 RETURN |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
2 is at index 4. |
|||
5 is not found. |
|||
</pre> |
|||
==={{header|IS-BASIC}}=== |
==={{header|IS-BASIC}}=== |