这个课程项目让我们阅读包含在一个文本文件中的10,514首歌曲的标题、艺术家和歌词。项目的当前部分要求我们编写一个有序的展开链接列表,并在title字段上运行搜索。还编写了比较器,以便按标题对清单进行排序。我们必须跟踪查找匹配所需的比较结果。
测试时,我得到了一些奇怪的结果。例如,运行搜索
天使返回23次匹配,需要552次比较,这与教授给出的答案相吻合。
t返回零匹配,需要9530次比较,其中预期匹配数为1148次。
ta返回62次匹配,需要进行8455次比较。
的不返回匹配项,需要进行8383次比较。
sa返回89次匹配和所需的73 55次比较
我的搜索算法如下所示:
G 219
对于第一步和第二步,我将当前值与搜索值进行比较
if (currentSong.getTitle().toLowerCase().startsWith(titleSearch))
用一个字母搜索返回false的这一行代码是什么,但是当添加一个a时,就会找到值。最好,我想要一种解决方案,它不需要我手动完成调试器中循环的8000次奇数迭代。此外,教授用期望值对结构进行了测试,我的代码通过了所有测试。
发布于 2010-10-28 00:37:08
我发现问题出在哪里了。在subList方法中,我使用了二进制搜索方法来识别第一个找到的匹配的索引位置。但是,由于二进制搜索只返回它遇到的第一个匹配,所以我有一个循环通过数组向后遍历以找到真正的第一个匹配。
但是,在这种情况下,二进制搜索返回的第一个点击位于0索引处,所以当我向后走时,会抛出一个ArrayIndexOutOfBoundsException,从而短路了整个过程。增加第二个测试解决了这个问题。
https://stackoverflow.com/questions/4038610
复制相似问题