我需要一组项目,我可以在Smalltalk中执行选择排序。
使用什么是最好的?列表,设置,链接列表等?
答案 0 :(得分:1)
首先要做的事情是:当然,你意识到选择排序是O(n ^ 2),这意味着无论实现如何,它对于大型集合都是低效的。
从您的角度来看,列表和链表的语义应该是相同的。两者都允许重复,而set则不允许重复。选择列表或设置,具体取决于哪一个对您的数据正确。
最后,如果list是数组支持的,链接列表只是交换指针,我会使用链表进行排序,因为交换是排序的关键。
所有这些评论都是通用的;没有一个是Smalltalk特有的。如果你研究算法和数据结构,你可以做出更好的选择。
答案 1 :(得分:1)
由于List的长度永远不会改变(选择排序就地工作),因此请使用Array。否则OrderedCollection也会引起关注。
答案 2 :(得分:0)
我同意使用SortedCollection。例如:
aCollection asSortedCollection:[:a :b|
"Enter your sort block here. like 'a value > b value'"
]