public static int getMiddle(int[] number, int low, int high){
int temp = number[low];//赋值之后可以把这个位置当作是空的
while(low < high){
while(low < high && number[high] >= temp)//必须有一个是等号或者两个都是等号,否则碰到一样的数,low和high无法相遇跳出循环
high--;
number[low] = number[high];//赋值之后可以把这个位置当作是空的
while(low < high && number[low] < temp)//必须有一个是等号或者两个都是等号,否则碰到一样的数,low和high无法相遇跳出循环
low++;
number[high] = number[low];//赋值之后可以把这个位置当作是空的
}
number[low] = temp;//最后一定会剩下一个空位可以补齐
return low;
}
public static void quickSort(int[] number, int low, int high){
if(low < high){
int middle = getMiddle(number, low, high);
quickSort(number, low, middle - 1);;
quickSort(number, middle + 1, high);
}
}
//快速排序的改进
//快速选择第k大的数,就是找的middle如果是第k大的数就是找到了。