快速排序 QuickSort

2021-07-31 05:05:20 字數 562 閱讀 7110

快速排序是分治模式的,實現快速排序分三個步驟:分解,解決,合併。(很多文章都會仔細的介紹這部分內容,但我覺得最重要的是明白一點:整個陣列分為3個部分,哨兵,比哨兵小的,比哨兵大的。然後就遞迴的解決大小問題就可以了)

源**:

package chap1;

public class quicksort }

int temp = array[j];

array[j] = array[i + 1];

array[i + 1] = temp;

return i+1;//返回的應該是交換後的哨兵的位置 }

//遞迴解決每個劃分後的小陣列

void quicksort(int array, int p, int r) }

public static void main(string args) ;

quicksort sort = new quicksort();

sort.quicksort(array, 0, array.length - 1);

for (int i : array)

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...