Smalltalk收集和分类

Smalltalk收集和分类,smalltalk,Smalltalk,我需要一个项目集合,我可以在Smalltalk中执行选择排序 最好用什么?列表、集合、链接列表等?第一件事:当然,您意识到选择排序是O(n^2),这意味着对于大型集合来说,无论实现如何,它都是低效的 从您的角度来看,列表和链表的语义应该是相同的。两者都允许重复,而set不允许。根据数据的正确性选择列表或集合 最后,若列表是以数组为背景的,而链表只是交换指针,那个么我会使用链表进行排序,因为交换是排序的关键 所有这些评论都是通用的;没有一个是专门针对Smalltalk的。如果研究算法和数据结构,您

我需要一个项目集合,我可以在Smalltalk中执行选择排序


最好用什么?列表、集合、链接列表等?

第一件事:当然,您意识到选择排序是O(n^2),这意味着对于大型集合来说,无论实现如何,它都是低效的

从您的角度来看,列表和链表的语义应该是相同的。两者都允许重复,而set不允许。根据数据的正确性选择列表或集合

最后,若列表是以数组为背景的,而链表只是交换指针,那个么我会使用链表进行排序,因为交换是排序的关键


所有这些评论都是通用的;没有一个是专门针对Smalltalk的。如果研究算法和数据结构,您可以做出更好的选择。

因为列表的长度永远不会改变(选择排序在适当的位置工作),所以请使用数组。否则,OrderedCollection也会感兴趣。

我同意使用SortedCollection。例如:

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

您想实现选择排序,还是只对项目进行排序?如果是后者,您可以使用SortedCollection。我需要实现选择排序。我只有10到20个项目。列表最有效吗?为什么需要实现选择排序?使用标准SortedCollection无法实现哪些应用程序?