1. 程式人生 > >快速排序(Java)

快速排序(Java)

amp ont 一個 nbsp 排序 ati pan 比較 java

快排,取基準元素(一般為數組第一個元素),同時從右、左向中間與基準元素比較,如果右邊元素小於基準元素,則將該元素調到左邊,如果左邊元素大於基準元素,則將該元素調到右邊,直至左右下標重疊,此時回填基準元素,滿足該基準元素左邊數組小於該值,右邊數組大於該值。

//快排
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);//遞歸排序右邊數組
}

快速排序(Java)