斐波那契查找
来源:互联网 发布:利笠分析知乎lilium 编辑:程序博客网 时间:2024/05/06 15:36
斐波那契查找
/*斐波那契查找的主要思想是:利用斐波那契数列进行下表分割。F(k)=F(k-1)+F(k-2)那么:F(k)-1=F[k-1]-1+F[k-2]也即有:F[k]-1=F[k-1]-1+1(mid,中间数)+F[k-2]-1;*/#include<cstdio>#define MAX 1000int F[]={0,1,1,2,3,5,8,13,21,34};//全局数组int Fibonacci_Search(int *a,int n,int key){int low,mid,high,i,k;low=1;high=n;k=0;while(n>F[k])//计算n位于斐波那契数列的位置k++;for(i=n;i<F[k]-1;i++)//将不满的数值补上a[i]=a[n];while(low<=high){mid=low+F[k]-1;//当前分割下标if(key<a[mid]){high=mid-1;k=k-1;}else if(key>a[mid]){low=mid+1;k=k-2;}else{if(mid<=n)return mid;//mid即为找到的位置else return n;//说明是补全的数值,返回n}}return 0;}int main(int argc,char *argv[]){int Array[MAX];int n,key;int i,index;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&Array[i]);scanf("%d",&key);index=Fibonacci_Search(Array,n,key);if(index==n||index==0)printf("Can not find!\n");elseprintf("Find it,index is: %d\n",index);return 0;}
1 0
- 查找-斐波那契查找
- 算法--查找--斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 斐波那契查找
- 二分查找,插值查找,斐波那契查找
- 查找--顺序查找,二分法,斐波那契查找
- HDU--杭电--2899--Strange fuction--二分
- 实现应用程序只有在第一次启动时显示引导界面
- Android学习自定义View(三)——自绘控件和组合控件
- strlen 与 sizeof
- UVa 156 - Ananagrams解题报告
- 斐波那契查找
- uva - 10340 All in All(字符串、贪心)
- Android学习自定义View(二)——View和ViewGroup绘制流程以及invalidate()
- iOS Dev (40) UIView 的几个重要方法
- Android学习自定义View(一)——初识View
- iOS Dev (41) 为什么iPhone应用很少选择Upside Down
- WPF基础知识
- 用Far制作chm的简易教程
- 题目1262:Sequence Construction puzzles(I)_构造全递增序列