def fibonacci_search(lis, key):
#
F = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,
233, 377, 610, 987, 1597, 2584, 4181, 6765,
10946, 17711, 28657, 46368]
low = 0
high = len(lis) - 1 #
k = 0
while high > F[k]-1:
k += 1
print(k)
i = high
while F[k]-1 > i:
lis.append(lis[high])
i += 1
print(lis) #
time = 0
while low <= high:
time += 1
#
if k < 2:
mid = low
else:
mid = low + F[k-1]-1 print("low=%s, mid=%s, high=%s" % (low, mid, high))
if key < lis[mid]:
high = mid - 1
k -= 1
elif key > lis[mid]:
low = mid + 1
k -= 2
else:
if mid <= high:
#
print("times: %s" % time)
return mid
else:
print("times: %s" % time)
return high
print("times: %s" % time)
return False LIST = [1, 5, 7, 8, 22, 54, 99, 123, 200, 222, 444]
result = fibonacci_search(LIST, 444)
print(result)

  

最新文章

  1. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
  2. java操作数据库增删改查的小工具1--TxQueryRunner
  3. python hmac-sha1
  4. Android NDK开发之从Java与C互调中详解JNI使用(一)
  5. Struts2学习笔记(十)——自定义拦截器
  6. php留言板
  7. VBA Excel WideCharToMultiByte Compile error on 64-bit System
  8. web.xml 各版本的 Schema 头部声明
  9. java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API
  10. LearnOpenGL
  11. maven 在clean package时,出现:找不到符号 [ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 解决办法
  12. Docker Mysql数据库双主同步配置方法
  13. Codeforces 438D The Child and Sequence - 线段树
  14. Java内存模型(JSR133)问与答
  15. Windows下的Jdk 1.8*安装并配置(图文详解)
  16. Netty 源码剖析之 unSafe.read 方法
  17. android开发(42) 使用andorid操作蓝牙打印机
  18. Twitter 高并发高可用架构
  19. ES6必知必会 (二)—— 字符串和函数的拓展
  20. linux开机启动详细流程图

热门文章

  1. angular $scope.$watch
  2. spark shuffle原理
  3. QLabel 文本内容自动换行显示
  4. Object-C-Foundation-NSDate
  5. appium记录
  6. 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
  7. python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样
  8. JS实现仿腾讯微博无刷新删除微博效果代码
  9. DBus学习网站
  10. Qt学习之路(45): 自定义model之一