Solved

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

Posted on 2006-10-26
4
1,248 Views
Last Modified: 2011-10-03
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
Comment
Question by:HCAAdmin
  • 2
4 Comments
 
LVL 84

Expert Comment

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

Author Comment

by:HCAAdmin
ID: 17821841
Thanks for the reply....

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

by:
Arthur_Wood earned 250 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

by:HCAAdmin
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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
why to use string 10 60
bigDiff challenge 17 104
noX challenge 17 112
Is there a canned solution for a custom genealogy website 2 92
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This article will show, step by step, how to integrate R code into a R Sweave document
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

815 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now