社区
其它技术问题
帖子详情
二分查找算法可以适用于模糊查找吗
jasonhc
2010-12-17 06:48:35
有这样的需求:一组排序好的数据放在一个数组里,用模糊匹配条件可以匹配一块连续的数据,现在需要根据某个模糊匹配条件来找到对应的一组数据。这个算法应该怎么设计比较好呢?
目前的一种办法是用二分查找:先二分找到某一个匹配的元素(index为M),在(0,M)范围内进行多次二分,一直到找到上边界为止;下一步在(M,N)范围内进行多次二分,一直到找到下边界为止。这个方法会有问题吗?
...全文
188
13
打赏
收藏
二分查找算法可以适用于模糊查找吗
有这样的需求:一组排序好的数据放在一个数组里,用模糊匹配条件可以匹配一块连续的数据,现在需要根据某个模糊匹配条件来找到对应的一组数据。这个算法应该怎么设计比较好呢? 目前的一种办法是用二分查找:先二分找到某一个匹配的元素(index为M),在(0,M)范围内进行多次二分,一直到找到上边界为止;下一步在(M,N)范围内进行多次二分,一直到找到下边界为止。这个方法会有问题吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jasonhc
2011-01-10
打赏
举报
回复
非常感谢,我脑子是有些不太清醒了 ^_^。最终还是做成了先找两个边界(多次二分),只是为了某种情况下能提高点效率。
[Quote=引用 12 楼 sduxiaoxiang 的回复:]
排好序后同一条件的在一块啊
找到一个就相当于都找到了啊 就在它左边和右边啊
[/Quote]
sduxiaoxiang
2010-12-19
打赏
举报
回复
[Quote=引用 11 楼 jasonhc 的回复:]
有些糊涂了。二分应该只能定位到那个范围内的某一项数据吧,怎么能正好定位到边界呢?
[/Quote]
排好序后同一条件的在一块啊
找到一个就相当于都找到了啊 就在它左边和右边啊
jasonhc
2010-12-19
打赏
举报
回复
有些糊涂了。二分应该只能定位到那个范围内的某一项数据吧,怎么能正好定位到边界呢?
luciferisnotsatan
2010-12-18
打赏
举报
回复
你的模糊匹配怎么个模糊匹配法?
二分查找只有找到和找不到两种结果
某某9
2010-12-18
打赏
举报
回复
[Quote=引用 9 楼 jasonhc 的回复:]
能说具体一点吗,怎么能一次就找到某一个边界的位置,用什么算法?
引用 7 楼 bdmh 的回复:
两次,分别找上下边界的位置,然后取出中间的数
[/Quote]
二分查找啊。
查找两次,分别匹配上下界。
是这个意思吧?
jasonhc
2010-12-18
打赏
举报
回复
能说具体一点吗,怎么能一次就找到某一个边界的位置,用什么算法?
[Quote=引用 7 楼 bdmh 的回复:]
两次,分别找上下边界的位置,然后取出中间的数
[/Quote]
liuintermilan
2010-12-18
打赏
举报
回复
[Quote=引用 4 楼 jasonhc 的回复:]
谢谢大家。说的不太清楚。举个例子:比如数据是字符串,需要找以T开始的所有字符串(也就是"模糊匹配条件可以匹配一块连续的数据")。当然实际情况要更复杂一些。
[/Quote]
我觉得用二分倒不是不行,但是对于查找字符串来说,应该是做索引更方便。
你的上下边界怎么确定,总要有阈值控制的。
bdmh
2010-12-18
打赏
举报
回复
两次,分别找上下边界的位置,然后取出中间的数
jasonhc
2010-12-18
打赏
举报
回复
怎么能直接定位到上或下边界呢,一次查找似乎不行吧。
[Quote=引用 5 楼 bdmh 的回复:]
其实可以分两次查找上边界和下边界,因为你的匹配范围肯定要有个范围的
[/Quote]
bdmh
2010-12-18
打赏
举报
回复
其实可以分两次查找上边界和下边界,因为你的匹配范围肯定要有个范围的
jasonhc
2010-12-18
打赏
举报
回复
谢谢大家。说的不太清楚。举个例子:比如数据是字符串,需要找以T开始的所有字符串(也就是"模糊匹配条件可以匹配一块连续的数据")。当然实际情况要更复杂一些。
liuintermilan
2010-12-17
打赏
举报
回复
其实不是很明白你的需求,你的模糊匹配的条件是什么样的?
sduxiaoxiang
2010-12-17
打赏
举报
回复
二分 找到合适的位置 再左右查找 知道找到不合适的 因为是排好序的 符合条件的数据在一起
夜深人静写
算法
(四十二)-
二分
查找
二分枚举的通用解法
数值区间的
模糊
匹配,
二分
查找
的应用
比如 不应该是 [0, 1500, 5] 这样去二分,而应该是 [0, 300, 1] 这样去二分。如果说弄一个 list 之类的容器去记录 x 的区间,这样似乎就失去了计算的意义,跟直接 switch case 也没什么区别了。思考 666 分钟之后,发现这个很难计算,虽然规律是显而易见的,但是,一个任意的 x ,又怎么去匹配到对应的行呢,似乎有点困难。于是决定换个思路,从 y 下手,因为 y 的值更少,而且规律更显而易见。需求很明确,要根据左边的值,显示右边的值。那么,根据规律 2 ,也就是说。
数据结构与
算法
之
二分
查找
Binary Search是一种针对有序区间内时间复杂度为O(logN)的搜索方式,最常见用于已经排好序的数组,边界处理不当,可能会导致跳过需要的结果或者死循环,遵循两个原则:1. 每次都要缩减搜索区域;2. 每次缩减不能排除潜在答案
python_内部排序
二分
查找
Task3 【排序】 实现归并排序、快速排序、插入排序、冒泡排序、选择排序 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素 【
二分
查找
】 实现一个有序数组的
二分
查找
算法
实现
模糊
二分
查找
算法
(比如大于等于给定值的第一个元素) 【内部排序】 归并排序: def MergeSort(MyList): length = len(MyList) if length &...
什么是
二分
查找
?它的时间复杂度是多少?
二分
查找
是一种高效且
适用
范围广的
查找
算法
,尤其在处理大规模、静态且有序的数据集时表现出色。然而,在数据频繁变化或数据量较小的情况下,其效率可能不如线性
查找
。
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章