"S. Joseph" wrote:
>
> I'm new to Java. I want to sort the data in reverse order but I don't
> understand the code and cannot tell where to modify it. Please help.
>
> /*
> * MergeSort.java
> > *
> > * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
> > *
> > * This software is the confidential and proprietary information of Sun
> > * Microsystems, Inc. ("Confidential Information"). You shall not
> > * disclose such Confidential Information and shall use it only in
> > * accordance with the terms of the license agreement you entered into
> > * with Sun.
> > *
> > * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
> > * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
> > * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
> > * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
> > * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
> > * THIS SOFTWARE OR ITS DERIVATIVES.
> > *
> > */
> >
> > /**
> > * An implementation of MergeSort, needs to be subclassed to
> > * compare the terms.
> > *
> > * @author Scott Violet
> > */
> > public abstract class MergeSort extends Object {
> > protected Object toSort[];
> > protected Object swapSpace[];
> >
> > public void sort(Object array[]) {
> > if(array != null && array.length > 1)
> > {
> > int maxLength;
> >
> > maxLength = array.length;
> > swapSpace = new Object[maxLength];
> > toSort = array;
> > this.mergeSort(0, maxLength - 1);
> > swapSpace = null;
> > toSort = null;
> > }
> > }
> >
> > public abstract int compareElementsAt(int beginLoc, int endLoc);
> >
> > protected void mergeSort(int begin, int end) {
> > if(begin != end)
> > {
> > int mid;
> >
> > mid = (begin + end) / 2;
> > this.mergeSort(begin, mid);
> > this.mergeSort(mid + 1, end);
> > this.merge(begin, mid, end);
> > }
> > }
> >
> > protected void merge(int begin, int middle, int end) {
> > int firstHalf, secondHalf, count;
> >
> > firstHalf = count = begin;
> > secondHalf = middle + 1;
> > while((firstHalf <= middle) && (secondHalf <= end))
> > {
> > if(this.compareElementsAt(secondHalf, firstHalf) < 0)
> > swapSpace[count++] = toSort[secondHalf++];
> > else
> > swapSpace[count++] = toSort[firstHalf++];
> > }
> > if(firstHalf <= middle)
> > {
> > while(firstHalf <= middle)
> > swapSpace[count++] = toSort[firstHalf++];
> > }
> > else
> > {
> > while(secondHalf <= end)
> > swapSpace[count++] = toSort[secondHalf++];
> > }
> > for(count = begin;count <= end;count++)
> > toSort[count] = swapSpace[count];
> > }
> > }
> >
You do not need to modify it. All you have to do is to inherit it:
public class MyMergeSort extends MergeSort {
public int compareElementsAt(int beginLoc, int endLoc) {
// comparison criteria here
}
}
and use it like here:
MyMergeSort sorter = new MyMergeSort();
sorter.sort(yourArray);
--
Regards,
Sergey Vorobiev
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets