今天查看了java文档中的sort方法

今天查看了java文档中的sort方法

  • 发现java中的Arrays.sort()不再使用经典快排,而是用了来自 Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch的双pivot方法:

img

于是我又查看了一下网上的介绍,发现这种方法之所以比经典快排要快,是因为

cpu和内存速度不匹配

所以排序算法的速度瓶颈在内存上,对应到具体实现上就是“访问数组元素次数”,

而算法上对时间复杂度的主要考虑是“元素比较次数”,而这主要是在cpu中实现的,也就是说,因为目前存在的

“cpu等内存”

的现象,新的dual-pivot快排才得以击败经典的one-pivot快排!

Stay hungry
原文地址:https://www.cnblogs.com/agnes6/p/13628215.html