c++有序表查找的方法是什么
发表于:2025-02-11 作者:千家信息网编辑
千家信息网最后更新 2025年02月11日,本篇内容介绍了"c++有序表查找的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.折半查
千家信息网最后更新 2025年02月11日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安全错误
数据库的锁怎样保障安全
常用文献检索数据库有哪些
数据库源数据是什么
与erp有关的一些数据库知识
黔南软件开发
数据库约束控制怎么弄
研究校园网络安全的创新之处
呼和浩特明德网络技术有限公司
什么是网络安全
软件开发好还是网页设计好
数据库勒索病毒加密
数据库招聘要求
湘潭游戏软件开发公司
db2数据库10.下载
上海橙域网络技术有限公司
制作窗体连接到数据库
柠檬 链接服务器
英文期刊全文数据库
网络安全小知识时事新闻课
大连圣同润互联网 科技
如何知道服务器的名
软件开发用谷歌地图
明日方舟服务器爆炸
网络安全竞争报告
保护内部网络安全的是什么技术
软件开发资质种类汇总
odps数据库读表结构
服务器硬盘用于pc
数据库还原时提示
数据库不用连表查询
莱山区软件开发哪家靠谱