排序圣经参考

时间:2013-05-14 17:27:46

标签: sorting

我正在研究CSCI Capstone,专注于通过圣经进行文本搜索,并且由于我的程序的性质,我返回了一个无序的经文参考列表,其格式如下:“nameOfBook chapNum:verseNum”。

获得引用列表后,我需要按顺序对所有三个字段进行排序:name,chapter和verse,我希望避免使用O(n ^ 3)算法。我已经有代码对书名上的每个引用进行排序,这是O(n),但我真的不知道从哪里开始......

建议?

编辑:我正在使用Arrays处理Java,并且正在考虑将已排序的数据存储到稍后可以访问的文本文件中。

1 个答案:

答案 0 :(得分:0)

如果您只想按名称,章节和经文进行单一排序,那么您可以设置一个排序,将所有这三个项目一起用作排序键,或者您可以使用“稳定排序” “按经文排序,然后按章节排序,然后按名称排序。

这是Python中的伪代码。它是真正的Python代码,除了我没有parse_code()get_name()get_chapter()get_verse()的定义。

lst = []
for x in parse_code(input_file):
    name = get_name(x)
    chapter = get_chapter(x)
    verse = get_verse(x)
    tup = (name, chapter, verse)
    lst.append(tup)

lst.sort()  # will automatically do what you want

当你有一个由元组组成的列表,并对列表进行排序时,Python将根据元组中的第一项进行排序,然后是第二项,接着是第三项。

另一方面,如果您尝试构建三个不同的索引,最简单的实现可能是将数据存储在数据库中,并在名称,章节和诗句中添加索引。您可以将SQLite用于数据库;对于一个项目来说,圣经中文本的大小我觉得它会很好用。