将数组中的项目分组?

时间:2010-01-05 01:14:08

标签: sorting algorithm

嘿伙计们,如果我有一个看起来像[A,B,C,A,B,C,A,C,B](随机顺序)的数组,我希望将它安排到[A,A, A,B,B,B,C,C,C](每个组在一起),允许的唯一操作是: 1)查询数组的第i项 2)交换数组中的两个项目。

如何设计在O(n)中完成工作的算法?

谢谢!

2 个答案:

答案 0 :(得分:1)

排序算法不再是你设计新鲜的东西(即你的开发过程的第一步);您应该研究已知的sort algorithms,看看哪些符合您的需求。

(当然,您可能真的需要自己的新排序算法,但通常具有不同且具有高度特异性的requirements。)

如果这不是你的第一步(但我不认为是这种情况),那么知道你已经尝试过什么以及它是如何失败将会有所帮助。

答案 1 :(得分:1)

这实际上只是counting sort

扫描阵列一次,计算As,Bs,Cs的数量 - 这应该会给你一个想法。这变得像bucket sort - 不完全是这样的。 As Bs和Cs的计数应该让你知道As,Bs和Cs的字符串属于哪里。