我正在查看特定序列的大型数组,我觉得我正在使用暴力而不是计算机科学来解决问题。
目前,我正在按顺序查看搜索序列中第一项的大数组,然后检查每个项目,直到失败或完全匹配。这提供了100%的准确度,但对于大型阵列来说速度不是很快。
我从来不是一名计算机科学专业的学生,所以我错过了很多算法课程,这里有很多人可能会有。有没有更好的方法来搜索数组中的序列?如果它有所作为,我不一定对完美的准确性感兴趣。
答案 0 :(得分:4)
如何使用Boyer-Moore algorithm?它非常简单明了,并且可以提高实际速度,特别是如果您的目标序列相当长。它用于搜索字符串,但这当然只是一种特殊类型的数组。
答案 1 :(得分:0)
没有更好的方法来搜索数组本身的匹配候选者。如果你没有订单,你不能在没有考虑的情况下丢弃候选人。
话虽如此,你可以利用Janne建议的方法优化候选人的接受或拒绝。
答案 2 :(得分:0)
如果您需要在同一序列中搜索多种模式,可以使用suffix arrays
如果你必须搜索一种模式,那么你可以通过Boyer-Moore或Knuth-Morris-Pratt改善一点暴力