我是一名统计学课程的分级员,并按随机顺序给我一系列的纸张家庭作业分配。我的部分工作是按字母顺序排列它们。我一直在使用类似于快速分类的方法,但其他分级人员使用了不同的方法。我想要一个高效的排序方法,说明理由,因为当我有考试的“大”号,说明理由提供。这里有一些细节我已经利用:排序考试的最佳算法
- 我有一个包含一个按字母顺序列出名册我应该看到的所有名字。
- 我不介意让名字比第一个字母更符合字母顺序。例如,如果“史密斯,约翰”出现在“索尔克,乔纳斯”之前,我很好。
- 我永远不会排序超过300个对象。
我的方法迄今已发现的中位数最后一个字母(例如:如果有60篇论文,挑相当于30人的姓氏字母)类名册,把它作为一个支点,并把所有的字母都放在一个中间位置,并把所有的字母放在另一个中。如果一封信和中位数一样,我把它放在中间的一堆。我现在在上/中位数桩上做同样的事情。当堆足够小以至于堆栈中只有三个或四个字母时,我为每个字母组成一个堆栈,然后按字母顺序将堆栈折叠成主堆栈。
是否有任何专门为字母排序而设计的算法,或者是比我的方法更高效的算法?一种看起来没有问题的方法是为每封信(26堆,最坏的情况)制作一个堆栈,但这会消耗太多的空间,以至于无法在一张桌子上使用。
这种愚蠢的情况形式化的原因,更多源于与另一位研究生的友好争论,他们使用两个桩的插入排序(创建一个排序的桩,将每个纸张从未排序的桩中按顺序添加到排序的桩中)比从一个严重的需要。我希望SO社区可以为另一种特定方法提供理由。 – 2012-03-16 18:25:28