1. 快速排序代码:
public static int[] quickSort(int arr[],int left,int right) {
int pivot = arr[left];//轴值
int i = left;//左下标
int j = right;//右下标
while (i < j) {
//在右边找到一个比中值小或者相等的值
while (i < j && arr[j] > pivot) {
j--;
}
//在左边找到一个比中值大或者相等的值
while (i < j && arr[i] < pivot) {
i++;
}
//在i和j没有相遇时,如果 arr[i] == arr[j] 此时让i+1
//即让arr[i+1] 与arr[j]进行交换 ,使两个相同的数在一起
if (arr[i] == arr[j] && i < j) {
i++;
} else {//交换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//左半部递归
if (i-1 > left) {
arr=quickSort(arr,left,i-1);
}
//右半部递归
if (j+1 < right) {
arr=quickSort(arr,j+1,right);
}
return arr;
}