26 lines
735 B
Plaintext
26 lines
735 B
Plaintext
100 rem Binary search
|
|
110 cls
|
|
120 dim a(10)
|
|
130 n% = 10
|
|
140 for i% = 0 to 9 : read a(i%) : next i%
|
|
150 rem Sorted data
|
|
160 data -31,0,1,2,2,4,65,83,99,782
|
|
170 x = 2 : gosub 280
|
|
180 gosub 230
|
|
190 x = 5 : gosub 280
|
|
200 gosub 230
|
|
210 end
|
|
220 rem Print result
|
|
230 print x;
|
|
240 if indx% >= 0 then print "is at index ";str$(indx%);"." else print "is not found."
|
|
250 return
|
|
260 rem Binary search algorithm
|
|
270 rem N% - number of elements; X - searched element; Result: INDX% - index of X
|
|
280 l% = 0 : h% = n%-1 : found% = 0
|
|
290 while (l% <= h%) and not found%
|
|
300 m% = l%+int((h%-l%)/2)
|
|
310 if a(m%) < x then l% = m%+1 else if a(m%) > x then h% = m%-1 else found% = -1
|
|
320 wend
|
|
330 if found% = 0 then indx% = -1 else indx% = m%
|
|
340 return
|