Java 在不使用收集方法的情况下对列表进行排序

Java 在不使用收集方法的情况下对列表进行排序,java,Java,如何在不使用收集方法的情况下对列表进行排序?因为这很可能是我的家庭作业,所以我将向您提供建议,而不是源代码 请看上的这一页。您应该根据自己的要求选择正确的排序算法。选择错误的算法可能意味着性能不佳或不必要的复杂性 假设您只有少量的项,并且需要一个简单的算法,那么您可以查看。维基百科页面包含伪代码。该算法具有O(n^2)性能 如果您的列表很长,并且希望以稍微复杂一点的算法为代价获得更好的性能,您可以尝试。该算法在平均和最差情况下都有O(n log(n))性能,是语言库中的一个流行选择。因为这很可能

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

因为这很可能是我的家庭作业,所以我将向您提供建议,而不是源代码

请看上的这一页。您应该根据自己的要求选择正确的排序算法。选择错误的算法可能意味着性能不佳或不必要的复杂性

假设您只有少量的项,并且需要一个简单的算法,那么您可以查看。维基百科页面包含伪代码。该算法具有O(n^2)性能


如果您的列表很长,并且希望以稍微复杂一点的算法为代价获得更好的性能,您可以尝试。该算法在平均和最差情况下都有O(n log(n))性能,是语言库中的一个流行选择。

因为这很可能是我的家庭作业,所以我将给你建议,而不是源代码

请看上的这一页。您应该根据自己的要求选择正确的排序算法。选择错误的算法可能意味着性能不佳或不必要的复杂性

假设您只有少量的项,并且需要一个简单的算法,那么您可以查看。维基百科页面包含伪代码。该算法具有O(n^2)性能

如果您的列表很长,并且希望以稍微复杂一点的算法为代价获得更好的性能,您可以尝试。该算法在平均和最坏情况下都有O(nlog(n))性能,是语言库中的一个流行选择。

路线图
    • 简单二次算法
      • -初学者友好型
      • -非常直观
      • -也很直观
    • 基于本质比较的排序
      • -稍微先进一点
      • -暂时跳过这个,但稍后再看
    • 本质非比较排序
      • -重要的是要理解
您的第一个排序算法 我认为计数排序是最好的算法开始。阅读并尝试理解它,然后编写自己的实现,如下所示:

  • 生成0到9之间的1000个随机数(使用
    java.util.random
    填充
    int[]
  • 使用计数排序对它们进行排序
  • 一旦你这样做了,你就会意识到当你可以利用数字的某些属性时,排序是多么简单(在本例中,它们介于0到9之间)

    你的第二个排序算法 对于下一个实现,选择排序是一个很好的直观排序算法。这是一种比较排序,并不假设数字的范围。在现实生活中,许多人使用这种算法进行排序:

    • 如果有一些选择,我们会寻找最好的,然后首先选择
    • 现在最好的已经出局了,所以我们从其他人中寻找第二好的
    • 然后我们寻找第三个最好的。。。等
    剩下的旅程 您可能想要实现其他二次算法只是为了更好地掌握基础知识,但下一步将是学习递归,特别是分治算法

    在不了解基本递归的情况下,您不会想直接进入合并排序/快速排序,因为它可能会变得过于复杂

    做一些常见的递归练习,如阶乘、斐波那契等。如果需要指导,请向stackoverflow寻求指针。甚至可能已经有关于学习递归的问题有了很好的答案

    附带旅行 您可能想要实现合并排序的合并部分,甚至在您还没有完全理解递归之前。这是一个很有教育意义的练习:

    • 给定数字a的排序数组和数字B的排序数组,将两者合并为一个排序数组
      • 利用A和B已经排序的事实
    路线图
      • 简单二次算法
        • -初学者友好型
        • -非常直观
        • -也很直观
      • 基于本质比较的排序
        • -稍微先进一点
        • -暂时跳过这个,但稍后再看
      • 本质非比较排序
        • -重要的是要理解
    您的第一个排序算法 我认为计数排序是最好的算法开始。阅读并尝试理解它,然后编写自己的实现,如下所示:

  • 生成0到9之间的1000个随机数(使用
    java.util.random
    填充
    int[]
  • 使用计数排序对它们进行排序
  • 一旦你这样做了,你就会意识到当你可以利用数字的某些属性时,排序是多么简单(在本例中,它们介于0到9之间)

    你的第二个排序算法 对于下一个实现,选择排序是一个很好的直观排序算法。这是一种比较排序,并不假设数字的范围。在现实生活中,许多人使用这种算法进行排序:

    • 如果有一些选择,我们会寻找最好的,然后首先选择
    • 现在最好的已经出局了,所以我们从其他人中寻找第二好的
    • 然后我们寻找第三个最好的。。。等
    剩下的旅程 您可能想要实现其他二次算法只是为了更好地掌握基础知识,但下一步将是学习递归,特别是分治算法

    在不了解基本递归的情况下,您不会想直接进入合并排序/快速排序,因为它可能会变得过于复杂

    做一些常见的递归练习,如阶乘、斐波那契等。如果需要指导,请向stackoverflow寻求指针。甚至可能已经有关于学习递归的问题有了很好的答案

    附带旅行 您可能希望实现合并排序的合并部分,甚至在