面接のよくあるアルゴリズムの問題---二分検索(再帰)python

574 ワード

注意numが見つからないと判断した場合、また移動時に1桁多く移動でき、検索速度が速くなります.
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