欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源

程序员技术交流①群:736386324 ,程序员技术交流②群:371394777

和题目一样,这个算法是按照黄金分割法作为原理的

黄金分割就是0.618:1

先看下菲波那切数列

代码实现:

#include

#define MAXSIZE 20

void fibonacci(int *f)

{

int i;

f[0] = 1;

f[1] = 1;

for(i=2; i < MAXSIZE; ++i)

{

f[i] = f[i-2] + f[i-1];

}

}

int fibonacci_search(int *a,int key,int n)

{

int low = 0;

int high = n - 1;

int mid = 0;

int k = 0;

int F[MAXSIZE];

int i;

fibonacci(F);

while( n > F[k]-1 )

{

++k;

}

for( i=n; i < F[k]-1; ++i)

{

a[i] = a[high];

}

while( low <= high )

{

mid = low + F[k-1] - 1;

if( a[mid] > key )

{

high = mid - 1;

k = k - 1;

}

else if( a[mid] < key )

{

low = mid + 1;

k = k - 2;

}

else

{

if( mid <= high )

{

return mid;

}

else

{

return high;

}

}

}

return -1;

}

int main()

{

int a[MAXSIZE] = {1, 5, 15, 22, 25, 31, 39, 42, 47, 49, 59, 68, 88};

int key;

int pos;

printf("请输入要查找的数字:");

scanf("%d", &key);

pos = fibonacci_search(a, key, 13);

if( pos != -1 )

{

printf("\n查找成功,关键字 %d 所在的位置是: %d\n\n", key, pos);

}

else

{

printf("未在数组中找到元素:%d\n\n", key);

}

return 0;

}

c语言黄金分割法搜索过程,【大话数据结构C语言】53 斐波那契查找(黄金分割法查找)...相关推荐

  1. 算法:斐波那契(黄金分割法)查找算法

    斐波那契数列 斐波那契数列,该数列公式为F(K) = F(k-1) + F(k-2),即 1.1.2.3.5.8.13.21--.F(k-1)/f(K)随着K的递增,该数越来越接近黄金分割比例,所以该 ...

  2. JAVA数据结构与算法之斐波那契查找(黄金分割点)

    前言 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现. 温馨提示:这篇博客可能不适合刚学数据结构的新手. 算法的简单介绍 黄金分割点是指把一条线段分割为 ...

  3. 【C语言】案例二十五 兔子数列(斐波那契数列)

    案例描述 兔子数列又称斐波那契数列,黄金分割数列,具体描述如下:一对兔子在出生两个月后,每个月都能生出一对小兔子,现有一对刚出生的兔子,假设所有兔子都不死,那么一年后有对少只兔子? 案例分析 n表示月 ...

  4. 【算法】斐波那契(黄金分割法) 查找算法

    文章目录 1.概述 2.非递归查找 1.概述 视频:https://www.bilibili.com/video/BV1E4411H73v?p=83

  5. 数据结构与算法分析:斐波那契堆

    参考 斐波那契堆(二)之 C++的实现 和 斐波那契堆的C++实现,可参考视频 [B站首发]来学斐波那契堆吧♪(^∀^●) 势函数的作用:得到进行一次操作的代价和势函数的变化关系:costi=Δϕ+k ...

  6. 2.数据结构与算法:斐波那契算法

    1.介绍斐波那契数列: 描述:斐波那契数列(Fibonacci sequence),指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波那契数列以如下被以递推的方法定义 ...

  7. 数据结构与算法--再谈递归与循环(斐波那契数列)

    再谈递归与循环 在某些算法中,可能需要重复计算相同的问题,通常我们可以选择用递归或者循环两种方法.递归是一个函数内部的调用这个函数自身.循环则是通过设置计算的初始值以及终止条件,在一个范围内重复运算. ...

  8. C语言 计算斐波那契数列

    C语言 计算斐波那契数列 前言 在学习C语言的道路上多次遇到了求斐波那契数列的问题,今天来总结一下我所知道的几种思想方法. 方法一:循环 使用斐波那契数列的推导式,通过循环将每一个值保存到数组fib中 ...

  9. C语言 - 递归之青蛙跳台阶详解(这货就是个斐波那契数列)

    什么是青蛙跳台阶问题? 一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶,如果台阶数为n,那么这只青蛙有多少种跳法? 电影<少年班>中有这样一个片段,导师周知庸寻找智力超群的少年时遇到了 ...

  10. 面试官问你斐波那契数列的时候不要高兴得太早 搞懂C语言函数指针 搜索引擎还可以这么玩? 那些相见恨晚的搜索技巧...

    面试官问你斐波那契数列的时候不要高兴得太早 前言 假如面试官让你编写求斐波那契数列的代码时,是不是心中暗喜?不就是递归么,早就会了.如果真这么想,那就危险了. 递归求斐波那契数列 递归,在数学与计算机 ...

最新文章

  1. elementUI源码修改的爬坑之旅
  2. twig模板引擎使用php,Twig模板引擎用法入门教程_PHP
  3. linux开始时间and结束时间,Linux NTP configure and Hangcheck-time
  4. 计算机Java程序设计标准讲义
  5. 看到一个有趣的东东。
  6. cad和python哪个好学_对纯外行人来说,学习PS和Python哪个更容易?
  7. 结构与算法(04):排序规则与查找算法
  8. 一篇文章带你吃透 hashmap(面试指南升级版)
  9. Graphviz 入口
  10. Python之网络编程(实现一个多用户同时在线的FTP用户管理程序)
  11. 如何能够快速创建自己的APP应用?
  12. nn.PReLU(planes)
  13. Redis入门指南笔记
  14. 语音识别算法、模型等解析
  15. iOS集成OpenCV,并实现图片马赛克
  16. Hacking the PS4, part 1
  17. mysql 1055 - Expression 解决
  18. win10重新安装以太坊mist客户端
  19. Excel技巧—两招轻松搞定汉字转拼音
  20. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

热门文章

  1. NAND Flash闪存坏块的相关知识
  2. 取之盈:微信电脑多开代码、电脑多开微信bat文件
  3. 希腊语 - 希腊字母表对应的意思 - 数据挖掘必备
  4. 算是目前PAYPAL最全最完整的开发方式了
  5. 省教育厅关于印发《湖北省义务教育阶段信息技术课程指导意见(试行)》的通知
  6. html app5 仿微信朋友圈,h5仿微信web版|仿微信电脑客户端|仿微信朋友圈源码
  7. 关于String类的split方法
  8. 使用Python比较两个文本文件的相似度
  9. MathExamV2.0四则混合运算计算题生成器
  10. 工厂模式(包含3种工厂)