我有一个包含大约30K歌曲名称的文件。我必须使用此列表与AJAX自动文本建议。 一些名字也以数字开头。我的问题是我可以对此列表进行二进制搜索吗?如果是,怎么样?
答案 0 :(得分:2)
首先对列表进行排序;
假设用户输入的第一个字母是“A”;
从high = 0开始,low =字符串数-1;
然后你可以定义一个高和一个低索引,其中high是以“A”开头的最后一个索引,low是第一个有字符串开头的索引用“A”。通过两次二进制搜索,可以实现这一目标。
因此,如果键入的下一个字母是“B”,那么您可以在上面定义的高和低范围内进行另一个二进制搜索,并使用两个二进制搜索再次调整高和低。确保在高低之间搜索字符串的第二个字符以匹配“B”,依此类推:)
注意:我建议使用数据库来执行此操作,但是当您查询是否有任何方法可以使用二进制搜索时,我会回答这个问题:)
简单的SQL查询:SELECT column_name FROM table_name WHERE column_name LIKE 'prefix%'
选择以'table_name'表格的'column_name'列中存储的'prefix'开头的字符串
答案 1 :(得分:0)
您可以使用mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )