二分搜索及测试函数

来源:互联网 发布:中国移动大数据 编辑:程序博客网 时间:2024/05/22 03:49

看了《编程珠玑》第一部分,完成了二分搜索已经这个函数的测试函数。

二分搜索思想十分简单,但是却很难一次性完成。

所以各种边缘测试是非常重要的。

下面是python完成的二分搜索代码。

def BinarySearch(list, point):    list.sort();    lenth = len(list);    l = 0;    r = len(list) - 1;    while(l <= r):        m = int((l + r) / 2);        temp = list[m];        if (point > temp):            l = m + 1;        elif (point == temp):            return m;        elif (point < temp):            r = m - 1;    return -1;

测试函数:

def BinarySearchTest(Max):    count = 0;    for i in range(0,Max):        list = [];        for j in range(0,i):            list.append(random.randint(-Max / 4, Max / 4))        list.sort();        point = random.randint(-25, 25);        TestIndex = BinarySearch(list, point);        try:            RightIndex = list.index(point);        except:            if (TestIndex == -1):                count += 1;                pass;            else:                print(list);                print('TestIndex = ', TestIndex, 'RightIndex = ', RightIndex)                print(point, ':no index error\n');            continue;        if (TestIndex != -1):            count += 1;            pass;        else:            print(list);            print('TestIndex = ', TestIndex, 'RightIndex = ', RightIndex)            print(point, ':error\n');    if (count == Max):        print('allright');    return count;  




0 0
原创粉丝点击