Java-对 volatile 的理解

当一个变量被定义为 volatile 之后,它将具备两种特性:

  1. 保证此变量对所有线程的可见性,但是不能保证原子性
  2. 禁止指令重排序优化

三路切分的快速排序

算法描述:
从左到右遍历数组一次,维护一个指针 lt 使得a[lo..lt-1] 中的元素都小于 v,一个指针 gt 使得 a[gt + 1..hi] 中的元素都大于 v,一个指针 i 使得 a[lt..i - 1]中的元素都等于 v,a[i..gt]中的元素都还未确定

快速排序

快速排序:

  1. 从待排数列中取出一个数作为基准数 v
  2. 分区过程,将比 v 大的数放在 v 的右边,比 v 小的放在左边
  3. 递归地重复第二步,直到各区间只剩一个数

插入排序

插入排序:构建有序序列,对于未排序数据,在已排序序列中从后(右)往前(左)扫描,找到相应位置并插入