c++有序表查找的方法是什么
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本篇内容介绍了"c++有序表查找的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.折半查
千家信息网最后更新 2024年11月19日c++有序表查找的方法是什么
本篇内容介绍了"c++有序表查找的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.折半查找法-binary search
如果线性表在排序是有序的 这种情况下我们才用顺序存储。
//折半查找法int BinarySearch(int* a,int n, int key){ int low=0; int high=n-1; while(low<=high) { int mid = (low+high)/2; if(keya[mid]) { low = mid+1; } else return mid; } return -1;//表示失败}
折半查找法类似于把静态有序查找表分成了两颗子树,时间复杂度为O(log N),当我们对顺序数据已经排序好,并且没有频繁插入删除时用折半查找法。
2.插值查找法
我们在字典中查找apple或者zoo一定不是按照折半查找法这样 会直接从前面或者后面查找,
不一定非要mid=(low+high)/2;
mid=(low+high)/2=low+(high-low)/2;
mid = low+(high-low)((key-a[low])/(a[high]-a[low]) )
//插值查找法int BinarySearch(int* a, int n, int key){ int low=0; int high = n-1; while(low<=high) { int mid = low+(low+high)*((key-a[low])/(a[high]-a[low])); if(keya[mid]) { low=mid+1; } else { return mid; } } return -1;}
此时时间复杂度还是O(longN),当关键字分部比较均匀时候可用此法。
3.斐波那契查找 O(log N)
//斐波那契数列void Fibonacci(){ int F[100]; F[0]=0; F[1]=1; for(int i=2;i<=100;i++) { F[i]=F[i-1]+F[i-2]; }}int Fibonacci_Search(int* a, int n, int key){ int k=0; int low=0; int high=n-1; while(n>F[k]-1)//计算n位于斐波那契数列的位置 { k++; } for(int i=n-1;ia[mid]) { low = mid+1; k=k-2; } else { if(mid<=n-1) { return mid; } else { return -1;//失败 } } }}
应当说 当顺序存储无序时 采用顺序查找法
当顺序存储已经排序好 我们可以采用折半查找法mid=(low+high)/2;
插值查找法mid=low+(high-low)*((key-a[low])/(a[high]-a[low]));
斐波那契法mid=low+F[k-1]=1;
以上三中算法无非就是mid 选取的不一样而已 不过在mid 选取时候也有加减乘除计算的。
"c++有序表查找的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
顺序
有序
数列
存储
排序
插值
方法
c++
复杂
内容
复杂度
情况
时候
时间
更多
知识
实用
频繁
加减乘除
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学校数据库怎么进啊
阿里网络安全吴翰清年薪
小红书为啥显示破坏网络安全
无线网络安全分类
db2数据库入门教程
世界互联网大会黑科技
搭建平台服务器如何部署
辽宁软件开发系统购买
软件开发服务部分不能退税吗
avast 服务器版
山东浪潮集团生产的服务器
机载导航数据库供应商
新吴区智能化软件开发经验丰富
安徽科技学院网络技术专升本
关于网络安全的作文小学
勇当网络安全守护者宣传周
北航网络安全学院夏令营
国家网络技术人才与创新基地
法院网络安全排查整改报告
数据库n元关系什么意思
部落联盟最强服务器
数据库原理及应用解释
空间数据库的数学基础是什么
软件开发 报价表
网络技术犯罪判刑
杭州计算机软件开发价钱是多少
个人资料 在线编辑 数据库
超鸿电脑软件开发中心
亳州医疗软件开发公司哪家好
数据库n元关系什么意思