数据结构(邓俊辉):有序向量(2.查找算法)

本文介绍了二分查找算法的两种改进版本:普通二分查找(A)和基于Fibonacci数列的查找(B/C),着重讨论了轴点mi的选择对查找效率的影响,以及如何通过调整轴点位置来优化时间复杂度。特别提到Fibonacci查找在大规模数据时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先顺序查找的很简单理解的,就是按顺序一个个从后到前查找(书中约定返回命中的多个相同元素的最大的秩)。

template <typename T>
Rank Vector :: find(T const& e, Rank lo, Rank hi) const{
   
	while ((lo < hi--) && (e != _elem[hi]));
	return hi;
}

容易得出该算法的时间复杂度为:O(n)

以下总结二分查找算法。
二分查找算法(版本A)利用的是此前学习的减而治之的思想策略。因为总是可以将它分解为两个规模减少的子问题和一个平凡的子问题。
二分查找(版本A)的思路不再进行赘述,这篇博客主要讲的是如何更细微地改进查找算法。

二分查找(版本A)

//在有序向量空间[lo,hi)内查找元素e,0 <= lo <= hi <= _size
template <typename T> static Rank binSearch(T* A, T const& e, Rank lo, Rank hi){
   
	while(lo < hi){
   
		Rank mid = (lo + hi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值