我有一个包含大约30K首歌曲名称的文件。我必须使用这个列表来自动建立AJAX文本。 一些名称也以数字开头。我的问题是我可以在这个列表上进行二进制搜索吗?如果是,如何?在字符串列表中进行二进制搜索
回答
首先排序列表;
假设用户输入的第一个字母是“A”;
以高= 0和低=字符串数量-1开头;
然后,你可以定义一个高和低指数,其中高就是以“A”开头的,低的是,有一个字符串的第一个索引与“A”开头的最后一个索引。通过两个二进制搜索可以实现。
因此,如果输入的下一个字母是“B”,那么您在上面定义的高低范围内进行另一个二分搜索,然后再用两个二进制搜索再次调整高和低。确保你搜索字符串的高低之间的第二个字符与“B”匹配等:) :)
注意:我建议使用数据库来这样做,但正如你所查询的,如果有任何方式使用二进制搜索,我回答这样:)
简单的SQL查询:SELECT column_name FROM table_name WHERE column_name LIKE 'prefix%'
选择那些字符串开始与存储在“表名”表列“COLUMN_NAME”
大跌倒在这里是你必须填充和搜索每个请求30,000元素的数组。 – Orangepill
@Orangepill:我相信该列表已预先填充。并且搜索是二分搜索,所以lg(30,000)<= 16(其中,lg = log2)因此每一步最多会有16 + 16 = 32个比较。 – Fallen
如果我将使用数据库,每当用户按下某个键时,我都不需要查询数据库吗? – silverflash
你可以使用mixed array_search (mixed $needle , array $haystack [, bool $strict = false ])
- 1. 在字符串列表一串二进制搜索
- 2. 使用ASCII字符和进行二进制搜索字符串?
- 3. 二进制搜索字符串数组
- 4. 二进制搜索树到字符串
- 5. 二进制搜索字符串数组
- 6. 在Python中执行二进制搜索字符串前缀
- 7. 二进制搜索树字符串搜索
- 8. 在单个链接列表上进行二进制搜索
- 9. 在有序链接列表上进行二进制搜索
- 10. 从字符串到二进制列表
- 11. 从字符串反序列化二进制搜索树
- 12. 在java中的二进制搜索字符串
- 13. 在大的二进制文件中搜索字符串
- 14. 在C++字符串上进行二进制搜索不起作用
- 15. 执行二进制搜索
- 16. 搜索二进制表
- 17. 按字符串长度对字符串排序后的字符串进行二进制搜索
- 18. 用二进制搜索填充列表
- 19. 二进制搜索递减列表?
- 20. 二进制搜索对象列表?
- 21. 在JavaScript中执行二进制搜索
- 22. 使用javascript进行二进制搜索
- 23. 在列表中执行二进制搜索 - Python
- 24. 二进制搜索
- 25. 二进制搜索
- 26. 二进制搜索
- 27. 二进制搜索
- 28. 为C中的字符串实现二进制搜索树
- 29. 字符串中的二进制搜索多维数组
- 30. 插入字符串的二进制搜索。错误在哪里?
定义“前缀”“二进制搜索“,请。 您希望结果如何?是一个下拉菜单吗? – silkfire
使用数据库...不要试图用这么大的文件来做这件事。 – Orangepill
@silkfire是的,它会显示在谷歌 – silverflash