zoukankan      html  css  js  c++  java
  • python递归实现折半查找

    1.Python 基础教程版:(有点没想清楚)

     1 def search(sequence, number, lower=0, upper=None):
     2     if upper is None: upper = len(sequence) -1
     3     print 'sequence = ', sequence, 'number = ' , number,
     4           'lower = ', lower, 'upper = ', upper
     5     if lower == upper:
     6         assert number == sequence[upper]
     7         return upper
     8     else:
     9         middle = (lower + upper) // 2
    10         if number > sequence[middle]:
    11             return search(sequence, number, middle + 1, upper)
    12         else:
    13             return search(sequence, number, lower, middle)

    2.自己实现版:

     1 def search(sequence, number, lower=0, upper=None):
     2     if upper is None: upper = len(sequence) -1
     3     print 'sequence = ', sequence, 'number = ' , number,
     4           'lower = ', lower, 'upper = ', upper
     5     if lower > upper:
     6         #assert number == sequence[upper]
     7         print 'number is not in sequence'
     8         return -1
     9     else:
    10         middle = (lower + upper) // 2
    11         if number == sequence[middle]:
    12             return middle
    13         elif number > sequence[middle]:
    14             return search(sequence, number, middle + 1, upper)
    15         else:
    16             return search(sequence, number, lower, middle - 1)
    17 
    18 def main():
    19     seq = [34, 67, 8, 123, 4, 100, 95, 175]
    20     seq.sort()
    21     print 'seq = ', seq
    22     n = input('please input a number from list:')
    23     print search(seq, n)
    24 
    25 if __name__ == '__main__':
    26     main()
  • 相关阅读:
    如何增加按钮的点击间隔时间
    如何增加button的点击范围
    定时器Timer的使用
    NSCache
    GCD和NSOperation的区别
    NSOperation实现线程间通信
    NSOperation添加操作依赖和监听
    自定义NSOperation
    NSOperation的多线程
    单例的实现(完整版代码)
  • 原文地址:https://www.cnblogs.com/yunsicai/p/3833584.html
Copyright © 2011-2022 走看看