jdk中Arrays sort方法源码分析:
分为基本元素排序和对象排序
基本对象使用快排,对象使用归并排序。原因是归并排序具有稳定性,在对对象排序的情况会有这个要求。
这其中还会有优化:
当元素小于7时,直接使用冒泡排序,因为在元素个数比较少时,快排和归并排序存在递归调用,在元素比较少的情况下,开销比较大。
在快速排序的比较因子的选择上优化,其中元素个数小于7选中间的,大于7小于40,选前后中间取中间那个,大于40的话分9段,每段随机取一个,选取中间值。
计算机组成原理cpu寄存器,内存,缓存的速率问题
他们的速度是寄存机>缓存>内存,原因大致为:
距离问题,寄存器离cpu处理器最近,内存最远
材质问题,寄存器的由多个集体管组成的,而内存则是晶体管加电容,在电容上存储电位,而电容会存在露电现象,所以需要周期性的充电,而在充电的过程中是不能工作的。
访问方法过程不一样,cpu包含寄存器,程序控制器,计算器,寄存器是cpu处理器直接访问的,而内存的访问需经由程序控制器和暂存区等一些概念控制访问的。
而L1、L2缓存的概念是他们的材质跟寄存器差不多,位置也在cpu中,只是他们类似有去医院看病已经拿到号的病人,需要排队。
这其中还有一个概念,电流的传播速度是多少,网上查过之后发现是接近于光速3*10^8,也就是说在计算机的计算计算后的传播速度是有限制的
还查到一个概念,intel的cpu(i7)45nm,技术远超别人几条大街。