快速排序
代码实现:
public class 快速排序 {
public static void main(String[] args) {
int[] array={6,1,2,7,9,3,4,5,10,8};
getQuicksort(array,0,array.length-1);
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
}
private static void getQuicksort(int[] array,int i,int j) {
//定义两个变量用来记录需要查找的范围
int start=i;
int end=j;
//记录基准数
if (start>end) {
return;
}
int basenumber=array[i];
//利用循环找到需要交换的数字
while (start!=end){
//利用end从后往前找比基准数小的数字
while (true){
if (end<=start||array[end]<basenumber){
break;
}
end--;
}
//利用start从前往后找到比基准数大的数字
while (true){
if (end<=start||array[start]>basenumber){
break;
}
start++;
}
//把end和start指向的元素进行交换
int temp=array[start];
array[start]=array[end];
array[end]=temp;
}
//当start和end指向同一个元素,基准数归位,拿着基准数和start或者end交换
int temp=array[i];
array[i]=array[start];
array[start]=temp;
//将基准数左边的进行排序
getQuicksort(array,i,start-1);
//将基准数右边的进行排序
getQuicksort(array,start+1,j);
}
}- 注意:一定是先移动end,在移动start

浙公网安备 33010602011771号