2013-05-14 2 views
0

Я работаю над CSCI Capstone, фокусируясь на поиске по Библии и из-за природы моей программы возвращаю неупорядоченный список ссылок на Священные Писания, отформатированные как таковые: «nameOfBook chapNum: verseNum» ,Сортировка Ссылки на Священные Писания

После того, как я получу список ссылок, мне нужно отсортировать их по всем трем полям: имя, глава и стих в этом порядке, и я надеюсь избежать использования алгоритма O (n^3). У меня уже есть код, который сортирует каждую ссылку на имя книги, которая была O (n), но я действительно не знаю, куда идти отсюда ...

Предложения?

Редактировать: Я работаю на Java с массивами и ищут хранение отсортированных данных в текстовый файл, к которому можно получить доступ позже.

+0

Какой язык программирования вы хотите использовать? Будете ли вы хранить данные в базе данных, писать текстовые файлы или просто отображать их? – steveha

+0

Вам нужно объяснить свой вопрос дальше. Как бы то ни было, это не помогает. – christopher

+0

Я работаю на Java с массивами. Ссылки на Священные Писания хранятся как Строки и, в конечном счете, будут сохранены в текстовый файл, который будет использоваться в качестве ссылки позже на –

ответ

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 для базы данных; для проекта размер текста в Библии, я думаю, он будет работать хорошо.

+0

. Чтобы использовать этот код для сортировки книг канонически, а не в алфавитном порядке, вы должны указать «ключ» 'аргумент' sort'. [Эта страница] (http://docs.python.org/2/howto/sorting.html#the-old-way-using-the-cmp-parameter) должна помочь в правильной настройке деталей. – chepner

+0

Да, когда я сказал, что он «сделает то, что вы хотите», я принимал алфавитный вид. – steveha

+0

Я ищу Библейский порядок, поэтому сортировка канонически, как предложил chepner выше –

Смежные вопросы