面试常见算法题---二分查找(递归) python

注意判断找不到num的情况,另外移动的时候可以多移动一位,查找速度更快。

class Solution():
    def two_part_search(self, list, num, i, j):
        while i < j:
            m = (i+j)//2
            if list[m] == num:
                return m
            elif list[m] > num:
                return self.two_part_search(list, num, i, m-1)
            else:
                return self.two_part_search(list, num, m+1, j)
        return None
    def main(self,list,num):
        i = 0
        j = len(list)-1
        m = self.two_part_search(list, num, i, j)
        return m

你可能感兴趣的:(面试常见算法题---二分查找(递归) python)