快速排序

  1.  

     代码实现:

    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);
    }
    }
  2. 注意:一定是先移动end,在移动start
posted @ 2023-03-26 12:30  为zq  阅读(18)  评论(0)    收藏  举报