0

私は、聖書のテキスト検索に焦点を当てた CSCI Capstone に取り組んでおり、プログラムの性質上、「nameOfBook chapNum: verseNum」のようにフォーマットされた聖書参照の順序付けられていないリストを返しています。

参考文献のリストを取得したら、名前、章、節の 3 つのフィールドすべてで並べ替える必要があります。O(n^3) アルゴリズムの使用は避けたいと考えています。O(n) だった本の名前で各参照を並べ替えるコードは既にありますが、ここからどこに行くべきか本当にわかりません...

提案?

編集:私は配列を使用してJavaで作業しており、後でアクセスできるテキストファイルにソートされたデータを保存することを検討しています。

4

1 に答える 1

0

名前、章、詩で単一の並べ替えを行いたい場合は、これら 3 つすべてを並べ替えのキーとして使用する並べ替えを設定するか、「安定した並べ替え」と並べ替えを使用できます。詩ごと、次に章ごと、そして名前ごとです。

これは Python の疑似コードです。parse_code()get_name()get_chapter()、またはの定義がないことを除けば、これは実際の Python コードです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 はタプルの最初の項目、2 番目の項目、3 番目の項目に基づいてソートします。

一方、3 つの異なる索引を作成しようとしている場合、おそらく最も単純な実装は、データをデータベースに隠し、名前、章、節のそれぞれに索引を付けることです。データベースに SQLite を使用できます。聖書のテキストのサイズのプロジェクトでは、うまくいくと思います。

于 2013-05-14T17:37:58.603 に答える