快速排序
基本思想: 采用分治算法。选择一个基准值pivot,将这组元素分为三部分,比基准值小或相等的都位于基准值左边,基准值,比基准值大的都位于基准值右边,再继续对左右来两个小区间进行同样的处理
快速排序主要分三部分:
1. 选择一个基准值(可选择区间最右边的元素作为基准值)
选取基准值的三个方法:
- 随机法
- 取边界值(最左边的值或最右边的值)
- 三数取中法
//实现基准值的三数取中法
int medianOfThree(int[] array, int left, int right) {
int mid = left + (left + right) / 2;
if(array[left] > array[right]){
if(array[left] < array[mid]){
return left;
} else if(array[mid] > array[right]){
return mid;
} else {
return right;
}
} else {
if (array[right] < array[mid]) {
return right;
} else if (array[mid] > array[le