当前位置:网站首页>线性表的查找
线性表的查找
2022-07-06 20:15:00 【ScarboroughFair#】
目录
1.顺序表查找算法
顺序查找的实现
改进:运用&,for循环后面加上分号
改进:把待查关键字key存入表头(哨兵),从后往前逐个比较,可以免去查找过程中每一步都要检测是否查找完毕,加快速度
当ST.length较大时,此改进能使进行一次查找所需的平均时间几乎减少一半
(带哨兵)顺序查找时间效率分析
顺序查找的特点
2.二分查找(详细见专栏:Acwing基础课)
二分查找的实现
普通折半查找
二分查找的递归算法
二分查找的性能分析——判定树
时间复杂度 O(logn)
二分查找特点
对线性链表无效的原因是找不到mid
3.分块查找
分块查找的实现
条件:1.将表分成几块,且表或者有序,或者分块有序;若i<j,则第j块中所有记录的关键字均大于第i块中的最大关键字
2.建立“索引表”(每个结点含有最大关键字和指向本块第一个结点的指针,且按关键字有序)
分块查找性能分析
分块查找特点
4.插值查找(了解)
5. 斐波那契查找
int Fibonacci_Search(int* a, int n, int key)
{
int low, high, mid, i, k;
low = 1; //定义最低下标为记录首位
high = n; //定义最高下标为记录末位
k = 0;
while (n > F[k] - 1) //计算n位于斐波那契数列的位置
k++;
for (i = n; i < F[k] - 1; i++) //将不满的数值补全
a[i] = a[n];
while (low <= high)
{
mid = low + F[k - 1] - 1; //计算当前分隔的下标
if (key < a[mid]) //若查找记录小于当前分隔记录
{
high = mid - 1; //最高下标调整到分割下标mid-1处
k = k - 1; //斐波那契数列下标减一位
}
else if (key > a[mid]) //若查找记录大于当前分隔记录
{
low = mid + 1; //最低下标调整到分隔下标mid+1处
k = k - 2; //斐波那契数列下标减两位
}
else
{
if (mid <= n)
return mid; //若相等则说明mid即为查找到的位置
else
return n; //若mid>n,说明是补全数值,返回n
}
}
return 0;
}
边栏推荐
- 制作(转换)ico图标
- cocos3——8.实现初学者指南
- [tools] basic concept of database and MySQL installation
- 掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺
- 从0开始创建小程序
- Jerry's broadcast has built-in flash prompt tone to control playback pause [chapter]
- Shell 编程基础
- Data analysis from the perspective of control theory
- Cryptography series: detailed explanation of online certificate status protocol OCSP
- Opencv environment, and open a local PC camera.
猜你喜欢
Form validation of uniapp
Use of promise in ES6
Mathematical induction and recursion
The first symposium on "quantum computing + application of financial technology" was successfully held in Beijing
Household appliance industry under the "retail is king": what is the industry consensus?
Left path cloud recursion + dynamic planning
「小样本深度学习图像识别」最新2022综述
MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua
Intelligent static presence detection scheme, 5.8G radar sensing technology, human presence inductive radar application
从0开始创建小程序
随机推荐
Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
Make (convert) ICO Icon
HDU 4337 King Arthur&#39;s Knights 它输出一个哈密顿电路
How to verify accesstoken in oauth2 protocol
存储过程与函数(MySQL)
An error in SQL tuning advisor ora-00600: internal error code, arguments: [kesqsmakebindvalue:obj]
Lingyun going to sea | yidiantianxia & Huawei cloud: promoting the globalization of Chinese e-commerce enterprise brands
Form validation of uniapp
杰理之RTC 时钟开发【篇】
硬件之OC、OD、推挽解释
【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
netperf 而网络性能测量
Appx代码签名指南
腾讯云原生数据库TDSQL-C入选信通院《云原生产品目录》
Matlab Error (Matrix dimensions must agree)
Numpy中排序操作partition,argpartition,sort,argsort
【安全的办公和生产力应用程序】上海道宁为您提供ONLYOFFICE下载、试用、教程
HDU ACM 4578 Transformation-&gt;段树-间隔的变化
leetcode
树莓派设置wifi自动连接