【问题标题】:better search algorithm to increase the performance?更好的搜索算法来提高性能?
【发布时间】:2011-03-31 13:24:52
【问题描述】:

我有学生列表显示在一个页面中,我将学生信息存储为带有 id 和 name 的对象。

如果列表中有滚动条,我想添加搜索框来搜索学生。

并根据搜索字符串更新学生列表。

现在我正在迭代学生对象数组并检查名称中搜索字符串的索引。

有没有更好的算法来提高性能。

// 我的代码:

搜索 = 函数(数据,查询字符串) { var res = 新数组(); for(stu in data){ 如果(stu.name.search(queryString)!= -1){ res.push(stu); } } 返回资源; }

【问题讨论】:

  • 向我们展示您当前的代码。除非这个列表中有成千上万的学生,否则这应该很快。

标签: javascript algorithm performance search


【解决方案1】:

您可以构建排序索引并使用二进制搜索。如果您需要按多个条件搜索多个索引,例如姓名或身份证。比树更容易实现。

【讨论】:

  • 有些学生可能会在创建排序索引后添加
  • 当然,如果插入新学生,则必须更新索引。否则就不好了。
【解决方案2】:

您想查找压缩空节点的 trie 数据结构或 radix-trie 或 crit-bit trie。你想寻找一个 kart-trie radix-trie 的特殊版本,其中一个节点中只有 2 条边。一般来说,trie 适用于文本搜索算法,例如字典。我已经在 phpclasses.org (kart-trie) 的 php 中完成了 kart-trie 的实现。欢迎您下载并使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多