0

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

在获得参考列表后,我需要按所有三个字段对它们进行排序:名称、章节和经文,我希望避免使用 O(n^3) 算法。我已经有代码可以对书名上的每个引用进行排序,即 O(n),但我真的不知道从这里去哪里......

建议?

编辑:我正在使用数组在 Java 中工作,并且正在考虑将排序后的数据存储到一个文本文件中,以便稍后访问。

4

1 回答 1

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 用于数据库;对于一个圣经文本大小的项目,我认为它会很好用。

于 2013-05-14T17:37:58.603 回答