java中排序报:Comparison method violates its general contract异常的解决
上周线上的一段排序的java代码出现了一个这个排序导致的异常将会在java7以上的版本出现,所以如果你的JDK从6升级到了7或者8,那一定要小心此异常。在java7的兼容列表中,就有对此排序不兼容的说明:我从资料中查阅到java7开始引入了Timsort的排序算法。我之前一直以为大部分标准库的内置排序算法都是快速排序。现在才得知很多语言内部都使用Timsort排序。随后我又在网上找到了这样一张图排序比较的图:可以发现,Timsort在表现上比QuickSort还要好。这篇博客不去详细讨论Timsort的实现,我可能会写另一篇博客单独讨论Timsort,简单来说Timsort结合了归并排序和插入排序。这个算法在实现过程中明确需要:严格的单调递增或者递减来保证算法的稳定性。
下载地址
用户评论