1 #include<iostream>
  2 using namespace std;
  3 #define MAXSIZE 100
  4
  5 int Seq_Search(int *a, int n, int key)
  6 {
  7     int i;
  8     for(i=0; i<n;i++)
  9     {
 10         if(a[i]==key)
 11             return i;
 12     }
 13     return 0;
 14 }
 15
 16 //折半查找
 17 int In_Search(int *a, int n, int key)
 18 {
 19     int low, high, mid;
 20     low = 0;
 21     high = n-1;
 22     while(low<high)
 23     {
 24         mid = (low+high)/2;
 25         if(a[mid]>key)
 26         {
 27             high--;
 28         }
 29         else if(a[mid]<key)
 30         {
 31             low++;
 32         }
 33         else
 34             return mid;
 35     }
 36     return 0;
 37 }
 38
 39 //插值查找
 40 int Insert_Search(int *a, int n, int key)
 41 {
 42     int low, high, mid;
 43     low = 0;
 44     high = n-1;
 45     while(low<high)
 46     {
 47         //插值
 48         mid = low + (high-low)*(key-a[low])/(a[high]-a[low]);
 49         if(a[mid]>key)
 50         {
 51             high--;
 52         }
 53         else if(a[mid]<key)
 54         {
 55             low++;
 56         }
 57         else
 58             return mid;
 59     }
 60     return 0;
 61 }
 62
 63 //斐波那契数列
 64 void  Fibonacci(int *F)
 65 {
 66     F[0] = 0;
 67     F[1] = 1;
 68     for(int i=2;i<MAXSIZE;i++)
 69     {
 70         F[i] = F[i-1] + F[i-2];
 71     }
 72 }
 73
 74 //斐波那契查找
 75 int Fibonacci_Search(int *a, int n, int key)
 76 {
 77     int low = 0;
 78     int high = n-1;
 79     int mid;
 80     int F[MAXSIZE];
 81     Fibonacci(F);
 82     int k =0;
 83     while(n>F[k]-1)
 84         k++;
 85     int *temp = new int[F[k]-1];
 86     memcpy(temp,a,n*sizeof(int));
 87     for(int i=n;i<F[k]-1;i++)
 88         temp[i] = a[n-1];
 89
 90     while(low<high)
 91     {
 92         mid = low + F[k-1] - 1;
 93         if(key<temp[mid])
 94         {
 95             high = mid-11;
 96             k = k-1;
 97         }
 98         else if(key>temp[mid])
 99         {
100             low = mid+1;
101             k = k-2;
102         }
103         else
104         {
105             if(mid<n)
106                 return mid;
107             else
108                 return n-1;
109         }
110     }
111     delete[] temp;
112     return -1;
113 }
114
115 int main()
116 {
117     int a[MAXSIZE];
118     for(int i=0;i<MAXSIZE;i++)
119         a[i] = i+1;
120     cout << Seq_Search(a,MAXSIZE,45)<<endl;
121     cout << In_Search(a,MAXSIZE,45)<<endl;
122     cout << Insert_Search(a,MAXSIZE,45)<<endl;
123
124     int arr[] = {0,16,24,35,47,59,62,73,88,99};
125     int key=73;
126     int index=Fibonacci_Search(arr,sizeof(arr)/sizeof(int),key);
127     cout<<key<<" is located at: "<<index;
128
129     system("PAUSE");
130     return 0;
131 }

转载于:https://www.cnblogs.com/jx-yangbo/p/4858058.html

查找一:C++静态查找相关推荐

  1. 数据结构:静态查找动态查找

    概念 1.静态查找 首先无论是静态查找还是动态查找,都要有查找的对象,也就是包含很多同类型数据的"表",这个"表"可以理解为一个由同类型数据元素组成的一个&qu ...

  2. c语言指针的折半法查找,数据结构笔记7:折半查找法(二分查找法)及C语言实现...

    折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 折半查找算法 对静态查找表{5,13,19,21,37,56, ...

  3. 数据结构:在下述几种树中,()可以表示静态查找表?

    题目 在下述几种树中,()可以表示静态查找表? A. 次优查找树 B. 二叉排序树 C. B-树 D. 平衡二叉树 解答 答案:A 静态查找表(Static Search Table):只作查找操作的 ...

  4. 数据结构 查找 静态查找表算法 折半查找 二叉排序树查找算法 实验报告

    实验内容: 基本内容: 算法1:采用顺序存储结构创建静态查找表,对查找表进行顺序查找和改进的顺序查找,并对其查找效率进行比较: 算法2:采用顺序存储结构创建静态查找表--有序表,对有序表进行二分查找: ...

  5. 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...

    一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...

  6. 14.查找概论与顺序查找

    一.查找概论 1.查找:即依据给定的某个值,在查找表中确定一个其keyword等于给定值的数据元素(或纪录).若表中不存在keyword等于给定值的纪录.则称查找不成功,此时查找的结果可给出一个&qu ...

  7. 数据结构——查找:折半查找、二叉查找(排序)树、平衡二叉树

    七大查找算法:https://www.cnblogs.com/zhang-qc/p/8745153.html 学习的地址 https://www.bilibili.com/video/av278314 ...

  8. python中顺序查找法例子_Python查找算法(一)------ 顺序查找

    查找算法  --  简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由用一类型的数据元素构成的集合 关健字( ...

  9. 查找算法:二分查找、顺序查找

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  10. python 查找算法_七大查找算法(Python)

    查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由同一类型的数据元素构成的集合 关键字(Ke ...

最新文章

  1. H01-P1201-0.6B金升阳高压模块
  2. LeetCode Evaluate Division(并查集)
  3. SAP Customer Data Cloud(Gigya)的用户搜索实现
  4. IntelliJ IDEA maven库下载依赖包速度慢的问题(包制百病)
  5. hdu5455(2015沈阳网络赛F题)
  6. sellhis股票平面图
  7. java模糊查询比对方法_Java多条件和模糊查询
  8. gunicorn部署Flask服务
  9. [dp]最长单调递增子序列LIS
  10. Linux中对进程的管理
  11. java序列化层数_java序列化详解
  12. python小程序代码_Python解题记录第19题
  13. adb工具构成及原理
  14. 软件测试和调试的区别
  15. 元气骑士超级科学计算机有什么用,元气骑士超级科学计算机攻略 天赋及获取方式汇总...
  16. 如何将py文件转化为exe
  17. 微信读书中总显示服务器错误,微信读书充值遇到问题怎么办 微信读书充值遇到问题解决方法...
  18. php页面导出csv,使用PHP生成并导出CSV文件
  19. 简书PC端私密文章放在哪?
  20. reshape 与 shape

热门文章

  1. python环境下载_Python for Windows 64位下载
  2. nvidia TX2 CUDA yolov5环境搭建
  3. php画图教程,php画图实例_PHP
  4. 403 forbidden nginx_linux搭建nginx服务
  5. 【kafka】Number of insync replicas for partition __transaction_state-4 is below required minimum
  6. 【clickhouse】创建物化视图数据来源是两张表该怎么写创建语句呢?
  7. 95-18-015-配置-AbstractBootstrapConfig
  8. spark学习-64-源代码:schedulerBackend和taskScheduler的创建(2)-StandLone
  9. 【Hadoop】HDFS Short Circuit Local Reads(HDFS短路读取)
  10. Spring : Spring @Transactional-嵌套事物处理