如何在不使用Collection方法的情况下对列表进行排序?
答案 0 :(得分:7)
我认为计算排序是最好的算法。阅读并尝试理解它,然后按如下方式编写自己的实现:
java.util.Random
填充int[]
)一旦你这样做了,你就会意识到当你可以利用数字的某些属性时,排序是多么简单(在这种情况下,它们介于0..9之间)。
选择排序是一种很好的直观排序算法,适合您的下一个实现。这是一种比较排序,并不假设任何有关数字范围的内容。现实生活中的许多人使用这种算法排序:
您可能希望实现其他二次算法只是为了更好地掌握基础知识,但下一步是学习递归,特别是划分和征服算法。
如果没有先了解基本的递归,你就不想直接进入合并排序/快速排序,因为它太过分了。
执行通常的递归练习,阶乘,斐波纳契等。如果需要指导,请从stackoverflow请求指针。甚至可能已经有关于学习递归的好答案的问题。
您可能希望实现合并排序的合并部分,甚至在您完全理解递归之前。这是一项非常有教育意义的练习:
答案 1 :(得分:2)
由于这很可能是家庭作业,我会给你建议而不是源代码。
在sorting algorithms上查看此页面。您应该根据您的要求选择正确的排序算法。选择错误的算法可能意味着性能不佳或不必要的复杂性。
假设您只有少量项目并想要一个简单的算法,那么您可以查看insertion sort。维基百科页面包含伪代码。该算法具有O(n ^ 2)性能。
如果您的列表很长,并且您希望以稍微复杂的算法为代价获得更好的性能,则可以尝试merge sort。该算法在平均和最差情况下都具有O(n log(n))性能,是语言库中的流行选择。