Smalltalk коллекции и сортировка - PullRequest
1 голос
/ 03 октября 2009

Мне нужна коллекция предметов, в которой я могу выполнить сортировку выбора в Smalltalk.

Что лучше всего использовать? Список, набор, связанный список и т. Д .?

Ответы [ 3 ]

1 голос
/ 04 октября 2009

Поскольку длина вашего списка никогда не изменится (сортировка выбора работает на месте), используйте массив. В противном случае OrderedCollection также будет представлять интерес.

1 голос
/ 03 октября 2009

Перво-наперво: вы, конечно, понимаете, что сортировка выбора - это O (n ^ 2), что означает, что она будет неэффективна для больших коллекций независимо от реализации.

С вашей точки зрения семантика списка и связанного списка должна быть одинаковой. Оба допускают дублирование, а набор - нет. Выберите либо список, либо набор в зависимости от того, какой из них подходит для ваших данных.

Наконец, если список поддерживается массивом, а связанный список просто заменяет указатели, я бы пошел с сортированным списком для сортировки, потому что обмен является ключевым фактором для сортировки.

Все эти комментарии являются общими; ни один не является специфическим для Smalltalk. Вы можете сделать лучший выбор, если изучите алгоритмы и структуры данных.

0 голосов
/ 20 января 2017

Я согласен использовать SortedCollection. Пример:

aCollection asSortedCollection:[:a :b|
    "Enter your sort block here. like 'a value > b value'"
]
...