QuickSort 快速排序

2021-09-01 06:31:23 字數 662 閱讀 9922

/*筆者剛學習演算法的時候,因為思考的不夠全面,導致直接使用紅色標註的地方,導致測試的時候出現異常,注意測試的時候,最後乙個引數必須是arr.length-1,否則會出現陣列越界。這兩處的坑,筆者都踩過,在問題中學習 進步是很重要的

public class quicksort

int i=head;

int j=tail;

int pivot = arr[(head + tail) / 2];//陣列平均的位置

while(i<=j)

//當兩個while條件都為false時,那麼需要交換兩者之間的位置

if(i//因為在遞迴呼叫的時候陣列被分成參考陣列pivot,乙個比pivot大的陣列和乙個比pivot小的陣列,所以需要兩個遞迴呼叫

//quicksort(arr,head,tail);

quicksort(arr, head, j);

quicksort(arr, i, tail);

}public static void main(string args) ;

//quicksort(arr, 0, arr.length);   //如果arr.length不減1,那麼會出現陣列越界

quicksort(arr, 0, arr.length-1);

for(int arrs:arr)}}

快速排序 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 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...