Sunday, March 1, 2020

Implementing QuickSort Sorting Algorithm in Delphi

Implementing QuickSort Sorting Algorithm in Delphi One of the common problems in programming is to sort an array of values in some order (ascending or descending). While there are many standard sorting algorithms, QuickSort is one of the fastest. Quicksort sorts by employing a divide and conquer strategy to divide a list into two sub-lists. QuickSort Algorithm The basic concept is to pick one of the elements in the array, called a pivot. Around the pivot, other elements will be rearranged. Everything less than the pivot is moved left of the pivot - into the left partition. Everything greater than the pivot goes into the right partition. At this point, each partition is recursive quick sorted. Heres QuickSort algorithm implemented in Delphi: procedure QuickSort(var A: array of Integer; iLo, iHi: Integer) ; var   Ã‚  Lo, Hi, Pivot, T: Integer; begin   Ã‚  Lo : iLo;   Ã‚  Hi : iHi;   Ã‚  Pivot : A[(Lo Hi) div 2];   Ã‚  repeat   Ã‚  Ã‚  Ã‚  while A[Lo] Pivot do Inc(Lo) ;   Ã‚  Ã‚  Ã‚  while A[Hi] Pivot do Dec(Hi) ;   Ã‚  Ã‚  Ã‚  if Lo Hi then   Ã‚  Ã‚  Ã‚  begin   Ã‚  Ã‚  Ã‚  Ã‚  Ã‚  T : A[Lo];   Ã‚  Ã‚  Ã‚  Ã‚  Ã‚  A[Lo] : A[Hi];   Ã‚  Ã‚  Ã‚  Ã‚  Ã‚  A[Hi] : T;   Ã‚  Ã‚  Ã‚  Ã‚  Ã‚  Inc(Lo) ;   Ã‚  Ã‚  Ã‚  Ã‚  Ã‚  Dec(Hi) ;   Ã‚  Ã‚  Ã‚  end;   Ã‚  until Lo Hi;   Ã‚  if Hi iLo then QuickSort(A, iLo, Hi) ;   Ã‚  if Lo iHi then QuickSort(A, Lo, iHi) ; end; Usage: var   Ã‚  intArray : array of integer; begin   Ã‚  SetLength(intArray,10) ;   Ã‚  //Add values to intArray   Ã‚  intArray[0] : 2007;   Ã‚  ...   Ã‚  intArray[9] : 1973;   Ã‚  //sort   Ã‚  QuickSort(intArray, Low(intArray), High(intArray)) ; Note: in practice, the QuickSort becomes very slow when the array passed to it is already close to being sorted. Theres a demo program that ships with Delphi, called thrddemo in the Threads folder which shows additional two sorting algorithms: Bubble sort and Selection Sort.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.