[Webinar] Streamline your web hosting managementRegister Today

x
Solved

# How to do a reverse sort (descending) of filenames using Quicksort function?

Posted on 2006-10-26
Medium Priority
1,311 Views
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
0
• 2

LVL 85

Expert Comment

ID: 17816036
if vec(loBound,SortField) < vec(hiBound,SortField) then
0

Author Comment

ID: 17821841

However it still doesn't seem to work. Perhaps I need to change something in the subroutine called "Swaprows"?
The following is the subroutine called within the Quicksort() function:

Parameters being passed into the subroutine:
SwapRows(vec,hiBound,loBound)
-------------------------------------------------------------
Sub SwapRows(ary,row1,row2)
'== This proc swaps two rows of an array
Dim x,tempvar
For x = 0 to Ubound(ary,2)
tempvar = ary(row1,x)
ary(row1,x) = ary(row2,x)
ary(row2,x) = tempvar

Next
0

LVL 44

Accepted Solution

Arthur_Wood earned 750 total points
ID: 17822057
try this change:

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,loBound,hiBound)
End If
End If

AW
0

Author Comment

ID: 17833631
I got an answer to this question....

Check out the response to my post! http://www.experts-exchange.com/Web/Q_22039210.html

Thanks for the effort and I will offer some points! :)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Looking for a way to avoid searching through large data sets for data that doesn't exist? A Bloom Filter might be what you need. This data structure is a probabilistic filter that allows you to avoid unnecessary searches when you know the data defin…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
###### Suggested Courses
Course of the Month7 days, 23 hours left to enroll