public void sort(int[] list) {
if (list != null && list.length > 1) {
quickSort(list, 0, list.length - 1);
}
}
private void quickSort(int list[], int left, int right) {
int index = partition(list, left, right);
if (left < index - 1) {
quickSort(list, left, index - 1);
}
if (index < right) {
quickSort(list, index, right);
}
}
/**
* 分区折中交换
*
* @param list int数组
* @param left
* @param right
* @return
*/
private int partition(int list[], int left, int right) {
int i = left, j = right;
int pivot = list[(left + right) / 2];//取折中点的值
while (i <= j) {//如果是倒序,就是把以下两while条件判断修改
while (list[i] < pivot)
i++;
while (list[j] > pivot)
j--;
if (i <= j) {
swap(list, i, j);
i++;
j--;
}
}
return i;
}