1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include<stdio.h>
int bseek(int key) { int array[10] = {1,2,3,4,5,6,7,8,9,10}; int low = 0; int high = (sizeof(array) / 4) - 1; int mid = 0; int ret = -1;
while(low <= high) { mid = (low + high) / 2; if (key == array[mid]) { ret = mid; break; } else if (key < array[mid]) { high = mid - 1; } else if (key > array[mid]) { low = mid + 1; } }
return ret; }
void main(int argc, char* argv[]) { printf("key[0]:%d\n", bseek(0)); printf("key[1]:%d\n", bseek(1)); printf("key[2]:%d\n", bseek(2)); printf("key[3]:%d\n", bseek(3)); printf("key[4]:%d\n", bseek(4)); printf("key[5]:%d\n", bseek(5)); printf("key[6]:%d\n", bseek(6)); printf("key[7]:%d\n", bseek(7)); printf("key[8]:%d\n", bseek(8)); printf("key[9]:%d\n", bseek(9)); printf("key[10]:%d\n", bseek(10)); printf("key[11]:%d\n", bseek(11)); }
|
list = [1,2,3,4,5,6,7,8,9,10]
low = 0
high = len(list) - 1
idx = 0
def bseek(key):
global low
global high
global idx
while(low <= high):
mid = (low + high) / 2
if (key == list[mid]):
idx = mid
break
elif(key < list[mid]):
high = mid - 1
elif(key > list[mid]):
low = mid + 1
bseek(6)
print idx