python 斐波那契查找
2024-08-30 10:49:36
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)
最新文章
- [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
- java操作数据库增删改查的小工具1--TxQueryRunner
- python hmac-sha1
- Android NDK开发之从Java与C互调中详解JNI使用(一)
- Struts2学习笔记(十)——自定义拦截器
- php留言板
- VBA Excel WideCharToMultiByte Compile error on 64-bit System
- web.xml 各版本的 Schema 头部声明
- java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API
- LearnOpenGL
- maven 在clean package时,出现:找不到符号 [ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 解决办法
- Docker Mysql数据库双主同步配置方法
- Codeforces 438D The Child and Sequence - 线段树
- Java内存模型(JSR133)问与答
- Windows下的Jdk 1.8*安装并配置(图文详解)
- Netty 源码剖析之 unSafe.read 方法
- android开发(42) 使用andorid操作蓝牙打印机
- Twitter 高并发高可用架构
- ES6必知必会 (二)—— 字符串和函数的拓展
- linux开机启动详细流程图
热门文章
- angular $scope.$watch
- spark shuffle原理
- QLabel 文本内容自动换行显示
- Object-C-Foundation-NSDate
- appium记录
- 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
- python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样
- JS实现仿腾讯微博无刷新删除微博效果代码
- DBus学习网站
- Qt学习之路(45): 自定义model之一