快速排序

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

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

Quick Sort Partition Animation

偽代碼

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


上一篇: 希爾排序實例程式(C程式) 下一篇: 快速排序實例程式(C語言)