改变Arrays.sort()的排序方向
Arrays.sort()默认为升序,要想降序可以实现Comparator
此时需要使用包装类,不能是基本数据类型
1 | Arrays.sort(nums,new Comparator<Integer>() { |
快速排序
1 | /** |
快速排序优化:
- 在选取pivotkey时,一般认为pivotkey是出于整个序列的中间位置最佳,此时可以选用三数取中的方法取得比较靠中间的值
- 优化不必要的交换,将交换替代为替换,最终再将最后被替换掉的数据补回来
1 | public static int optimizedPartition(int[] L,int low,int high) { |
插入排序
1 | /** |
选择排序
1 | /** |
冒泡排序
优化冒泡排序
1 | /** |
堆排序
1 | public static void heapSort(int[] L) { |
单例模式
多线程懒汉式
1 | public class Singleton { |
volatile 的必要性:new 对象的时候分为三个步骤,请求对象空间,对象初始化,指针指向对象。volatile保证了不发生指令重排,避免在if判断时,double check多线程出错