不使用Collection方法对列表进行排序

1 java

如何在不使用Collection方法的情况下对列表进行排序?

pol*_*nts 7

路线图

你的第一个排序算法

我认为计算排序是最好的算法.阅读它并尝试理解它,然后按如下方式编写自己的实现:

  1. 在0..9之间生成1000个随机数(用于java.util.Random填充int[])
  2. 使用计数排序对它们排序.

一旦你这样做,你就会意识到当你可以利用数字的某些属性时,排序是多么简单(在这种情况下,它们介于0..9之间).

你的第二个排序算法

选择排序是一种很好的直观排序算法,可用于下一个实现.这是一种比较排序,并不假设任何有关数字范围的内容.现实生活中的许多人使用这种算法排序:

  • 有一些选择可供选择,我们会寻找最佳选择并先选择它.
  • 现在最好的是,所以我们寻找其余的第二好.
  • 然后我们寻找第三好......等等

剩下的旅程

您可能希望实现其他二次算法只是为了更好地掌握基础知识,但下一步将是学习递归,特别是划分和征服算法.

如果没有先理解基本的递归,你不会想直接进入合并排序/快速排序,因为它可能会变得过于庞大.

做通常的递归练习,阶乘,斐波那契等.如果你需要指导,请从stackoverflow请求指针.甚至可能已经存在关于学习递归的良好答案的问题.

一次旅行

您可能希望实现合并排序的合并部分,甚至在您完全理解递归之前.这是一个非常有教育意义的练习:

  • 给定数字A的排序数组和数字B的排序数组,将两者合并为一个排序数组
    • 利用A和B已经排序的事实