Solved

# How/What do I change the Quicksort function (execerpt below) to sort in descending order (Z to A; n to 0)?

Posted on 2006-10-26

I'm having a problem trying to do a reverse sort (descending order; Z to A; n to 0).

The Quicksort function (mentioned below) does a sort in ascending order (A to Z; 0 to n) and is an excerpt from a C++ book called "Data Abstractions & Structures using C++". I've used the following code to do a sort of filenames/folders in a customized Enhanced Browser Page for IIS 5.0 and WORKS!!! I've tried to manipulate variables within the function to do a reverse sort however I've had no luck....

My question: How/What do I change the Quicksort function (execerpt below) to sort in descending order (Z to A; n to 0)?

'___________________________________________________________________

Sub QuickSort(vec,loBound,hiBound,SortField)

'==--------------------------------------------------------==

'== Sort a 2 dimensional array on SortField ==

'== ==

'== This procedure is adapted from the algorithm given in: ==

'== ~ Data Abstractions & Structures using C++ by ~ ==

'== ~ Mark Headington and David Riley, pg. 586 ~ ==

'== Quicksort is the fastest array sorting routine For ==

'== unordered arrays. Its big O is n log n ==

'== ==

'== Parameters: ==

'== vec - array to be sorted ==

'== SortField - The field to sort on (2nd dimension value) ==

'== loBound and hiBound are simply the upper and lower ==

'== bounds of the array's 1st dimension. It's probably ==

'== easiest to use the LBound and UBound functions to ==

'== Set these. ==

'==--------------------------------------------------------==

Dim pivot(),loSwap,hiSwap,temp,counter

Redim pivot (Ubound(vec,2))

'== Two items to sort

if hiBound - loBound = 1 then

if vec(loBound,SortField) > vec(hiBound,SortField) then

Call SwapRows(vec,hiBound,loBound)

End If

End If