1. 查找
问题定义:在非降序数组中,找出指定的元素,如从{1,2,3,6,8,12}中找出元素2的位置。
二分查找的复杂度(比较次数,又称查找长度)是O(1.5log(n)),但不是最优的。改进:fibonacci数列进行改进。
原因:对于一个非降序数组,二分查找向左查找。需要比较1次,而向右查找,需要比较2次,存在不平衡,而我们希望,正确的比较(向左查找)的次数多一些,所以,不再使用从中间元素分成两半,进行查找,而是以fibonacci数列的值(1、1、2、3、5、8、13、21、34)作为划分数组的依据。如假设待查找数组的长度是21-1=20,第一次二分的点是13-1=12的位置,依次类推。
分别计算成功命中/未命中的查找次数,向左走,比较1次;向右走,比较2次。算得查找长度比二分查找略小(4.00
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?