快速排序(Java)

it2022-05-05  140

快排,取基准元素(一般为数组第一个元素),同时从右、左向中间与基准元素比较,如果右边元素小于基准元素,则将该元素调到左边,如果左边元素大于基准元素,则将该元素调到右边,直至左右下标重叠,此时回填基准元素,满足该基准元素左边数组小于该值,右边数组大于该值。

 

//快排 public static void quickSort(int[] array,int low,int height){    if(low > height){        return;    }     int i = low;     int j = height;     int base = array[i];//基准元素     while(i < j){         while(i < j && base < array[j]){             j--;         }         if(i < j){//此时,右边元素小于基准元素,将该值调往左边             array[i++] = array[j];         }         while(i < j && base > array[i]){             i++;         }         if(i < j){//此时,左边元素大于基准元素,将该值调往右边             array[j--] = array[i];         }     }     array[i] = base;     quickSort(array,low,i-1);//递归排序左边数组     quickSort(array,i+1,height);//递归排序右边数组 }

转载于:https://www.cnblogs.com/hj-lxp/p/10422294.html


最新回复(0)