快排代码
public void myQuickSort(int[] arr, int low, int hight) {
if (low > hight) {
return;
}
int i, j, temp, t;
i = low;
j = hight;
//这个就是我们的基准值
temp = arr[low];
while (i < j) {
//先从右往左找小于基准值的
while(temp <= arr[j] && i < j){
j--;
}
//从左往右找比基准值大的数
while(temp >= arr[i] && i < j){
i++;
}
//这个时候表明已经找到了或者说i==j了
//交换i j 指标对应的值
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
//等内层循环找完,就表明在i=j的地方已经找到,交换基准值和指标对应的值
arr[low] = arr[i];
arr[i] = temp;
//递归左边
myQuickSort(arr,low,j-1);
//递归右边
myQuickSort(arr,j+1,hight);
}