快速排序(Quick Sort)

2022-02-17 20:18:47 字數 928 閱讀 3747

快速排序使用分治法來把乙個串(list)分為兩個子串(sub-lists)。具體演算法描述如下:

//當左右指標重合或者右指標指向元素小於比較因子的時候

if ((leftpointer < rightpointer))

//經過上面兩個步驟後,右邊比比較因子小的數被置換到了左邊

//繼續判斷,此時左右指標未重合,且左指標指向的元素比比較因子小的時候,讓左指標向右移動一次

while (leftpointer < rightpointer && arr[leftpointer] < factor)

//將左指標指向的比比較因子大的數放到右邊

if (leftpointer < rightpointer)

//經過此步驟之後,左邊放的是比比較因子小的數,右邊放的全部是大於比較因子的數

//這時候就可以把取出來的比較因子重新放回到陣列裡面了

//此時的陣列是按照比較因子分隔的

arr[leftpointer] = factor;

//繼續遞迴陣列左邊比比較因子小的部分,直到左指標和右指標重合,也就是左指標和右指標重合的時候

sort1(arr, left, leftpointer - 1);

//同上

sort1(arr, leftpointer + 1, right);}}

}public static void main(string args)

}

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