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