【发布时间】:2014-02-16 08:07:25
【问题描述】:
我正在做一些计算建模,其中我需要搜索不规则间隔且数据未排序的数据,所以这里是场景
我的样本数据点
col1 col2
1 92
9 45
7 22
2 14
5 10
所以我正在寻找的搜索算法是这样的,
说如果key = 2 那么函数应该返回2 的索引,因为它可用,例如我想搜索3,它不在col1 中,因为它不可用,我需要搜索最近的两个方向的值,即2 和5 的索引
如果是awk,可以使用类似这样的方式搜索确切的键
function search(Arr,key){
if((key in Arr))
return key
}
但我真的不知道只能在上下方向搜索最近的值,以防找不到确切的键
我希望我的要求是明确的,如果投反对票,也请发表您的评论,因为我的问题是因为声誉较低(这个论坛的新手),我无法为有用的答案投票,请共同操作。
【问题讨论】:
-
您是否尝试对数组进行排序,然后使用
Binary Search,因为这可以为您提供上限和下限。 -
在 shell 或 AWK 中执行它会很困难,除非您像在 C 或 C++ 程序中那样读取文件。在 C 中这并不难,而在 C++ 中则很容易。但是,没有人可能会给您一个完整的解决方案(根据所使用的语言,可能会非常有所不同),而无需您付出一些努力来展示您迄今为止所尝试的内容。
-
@Joachim Pileborg :感谢您的回复,我实际上正在使用 matlab,因为它有很多内置功能,但 matlab 非常慢.. 所以我在
c / c++ / awk寻找解决方案 -
@G one : 感谢您的回复,请给我一个示例。我不是很好的程序员..
-
只是谷歌搜索(二进制搜索)和排序技术(合并、冒泡、快速),你会发现很多例子。还是你不明白然后回复:)