快速排序

快速排序是一種高效的排序算法,並基於分割數據的數組成更小的數組。一個大的數組被劃分成兩個數組,其中一個保持值比規定的值小的表示基於支點在其上的分區是由與另一個數組保存值大於支點的值。

快速排序分割數組,然後調用自身遞歸兩次排序得到的兩個子數組。該算法對大型數據集作爲平均和最壞情況的複雜性相當有效率爲O(nlogn),其中n是項目的數目。

Quick

僞代碼

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編程語言快速排序的實現,請點擊這裏