Java 计数排序比快速排序好吗?
我已经用Java语言编写了计数排序和快速排序的代码来对整数进行排序。对于较小的输入,这两种代码都可以正常工作,但是当我给出100000个数组的大小时,快速排序停止工作,而计数排序将正确排序。因此,当未排序数组的大小非常大时,我可以说使用计数排序优于快速排序吗?我正在使用EclipseIDEOxygen.3a版本(4.7.3a)。提前感谢。计数排序的时间复杂度更好,但空间复杂度更差。所以,如果你有非常大的集合,这实际上取决于什么对你来说更重要,内存消耗还是CPU消耗 应该注意的是,虽然计数排序在计算上更优越,但它仅适用于小整数值的排序。因此,尽管它具有优越性,但它并不总是快速排序的有效替代品。因此,声称它完全取代了快速排序作为一种选择是不准确的Java 计数排序比快速排序好吗?,java,sorting,Java,Sorting,我已经用Java语言编写了计数排序和快速排序的代码来对整数进行排序。对于较小的输入,这两种代码都可以正常工作,但是当我给出100000个数组的大小时,快速排序停止工作,而计数排序将正确排序。因此,当未排序数组的大小非常大时,我可以说使用计数排序优于快速排序吗?我正在使用EclipseIDEOxygen.3a版本(4.7.3a)。提前感谢。计数排序的时间复杂度更好,但空间复杂度更差。所以,如果你有非常大的集合,这实际上取决于什么对你来说更重要,内存消耗还是CPU消耗 应该注意的是,虽然计数排序在计
有关详细信息,请参阅以下链接:计数排序的时间复杂度更好,但空间复杂度更差。所以,如果你有非常大的集合,这实际上取决于什么对你来说更重要,内存消耗还是CPU消耗 应该注意的是,虽然计数排序在计算上更优越,但它仅适用于小整数值的排序。因此,尽管它具有优越性,但它并不总是快速排序的有效替代品。因此,声称它完全取代了快速排序作为一种选择是不准确的
有关详细信息,请参阅以下链接:当可能值的范围有限时(如您知道,所有数字都是从1到100),将使用计数排序。快速排序用于其他情况:)快速排序停止工作-似乎您在实现它时犯了错误。Arrays.sort()方法应该可以正常工作。如果您没有提供足够的信息来获得有意义的答案。计数排序只适用于快速排序可以解决的问题的一个子集。正确的选择取决于许多其他因素。如果计数排序正确,这通常是最好的选择。@Leo Leontev我已经提到,这两种算法对于较小的输入都能正常工作。@Coderandhacker我在下面添加了一个正确的答案,说明了随着数据集的增长这两种算法的优点。@Coderandhacker可能您的快速排序实现不快:)尝试搜索快速排序的示例InternetCounting排序是在可能值的范围有限时使用的(例如,如果您知道,所有数字都是从1到100)。快速排序用于其他情况:)快速排序停止工作-似乎您在实现它时犯了错误。Arrays.sort()方法应该可以正常工作。如果您没有提供足够的信息来获得有意义的答案。计数排序只适用于快速排序可以解决的问题的一个子集。正确的选择取决于许多其他因素。如果计数排序正确,这通常是最好的选择。@Leo Leontev我已经提到,这两种算法对于较小的输入都能正常工作。@Coderandhacker我在下面添加了一个正确的答案,说明了随着数据集的增长这两种算法的优点。@Coderandhacker可能您的快速排序实现不快:)尝试搜索快速排序的示例国际互联网认为,如果说计数排序的空间复杂度更差,这是一种误导:它可能更差,也可能更好,这取决于N和K的相对值。我认为,甚至不应该考虑计数排序,除非K比N小得多。@DanielPryden fair point。你想编辑答案吗?我很乐意批准。我认为,如果说计数排序的空间复杂度更差,这是一种误导:它可能更差,也可能更好,这取决于N和K的相对值。我认为,除非K很大,否则甚至不应该考虑计数排序,远远小于N.@DanielPryden fair point。你想编辑答案吗?我很乐意批准。