快速排序是一種高效的排序演算法,並基於分割資料的陣列成更小的陣列。一個大的陣列被劃分成兩個陣列,其中一個保持值比規定的值小的表示基於支點在其上的分割區是由與另一個陣列儲存值大於支點的值。
快速排序分割陣列,然後呼叫自身遞回兩次排序得到的兩個子陣列。該演算法對大型資料集作為平均和最壞情況的複雜性相當有效率為O(nlogn),其中n是專案的數目。
A : array of items procedure quickSort(left, right) if right-left <= 0 return else pivot = A[right] partition = partitionFunc(left, right, pivot) quickSort(left,partition-1) quickSort(partition+1,right) end if end procedure function partitionFunc(left, right, pivot) leftTutorialser = left -1 rightTutorialser = right while True do while A[++leftTutorialser] < pivot do //donothing end while while rightTutorialser > 0 && A[--rightTutorialser] > pivot do //donothing end while if leftTutorialser >= rightTutorialser break else swap leftTutorialser,rightTutorialser end if end while swap leftTutorialser,right return leftTutorialser end function procedure swap (num1, num2) temp = A[num1] A[num1] = A[num2] A[num2] = temp; end procedure
要檢視C程式設計語言快速排序的實現,請點選這裡