怎么插入排序比选择排序慢这么多?

来源:2-4 插入排序法的特性

iTvX

2020-11-19 18:03:19

bobo老师,代码是从慕课git下载下来的,所以是没有问题的。

在 macOS 下的 jdk 15.1,跑出来是这样的:

在虚拟机 ubuntu 的 openjdk 8 中,跑出来是这样的:

为什么会这样呢?同样一份代码,在 jdk 15.1 下,插入排序的 random array 怎么比选择排序慢了这么多?因为试了很多次,所以应该不存在随机性

最后,把ubuntu的jdk升级到jdk 11,神奇的事情又出现了:

写回答

1回答

liuyubobobo

2020-11-19

和 JVM 相关。


我在我的环境下测试,使用 Java 8 没有这个问题。但是使用 Java 11 确实有这个问题,如果添加上 -XX:+UseParallelOldGC 这个参数,这个问题就会得到极大的缓解。


不过因为不同的 Java 版本,JVM 的参数是不一样的,我也不是 JVM 专家,JVM 本身也不是这个课程的重点,所以我也不尝试寻找这个问题的最优解了。如果你有兴趣可以根据你使用的 Java 版本研究一下更多 JVM 的优化设置。课程的所有代码都是在 Java 8 下测试的结果。


继续加油!:)

4

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2584 学习 · 1063 问题

查看课程