mev-4.0.01/source/org/tigr/util/Sort.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: Sort.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.1.1.1 $
2 26 Feb 07 jari 8  * $Date: 2003/08/21 21:04:23 $
2 26 Feb 07 jari 9  * $Author: braisted $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.util;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 public class Sort {
2 26 Feb 07 jari 15     public static int[] mergeSort(int[] s) {
2 26 Feb 07 jari 16   return Sort.mergeSort(s, 0, s.length - 1);
2 26 Feb 07 jari 17     }
2 26 Feb 07 jari 18     
2 26 Feb 07 jari 19     public static int[] mergeSort(int[] s, int f, int l) {
2 26 Feb 07 jari 20   if (f < l) {
2 26 Feb 07 jari 21       int m = (f + l) / 2;
2 26 Feb 07 jari 22       Sort.mergeSort(s, f, m);
2 26 Feb 07 jari 23       Sort.mergeSort(s, m + 1,l);
2 26 Feb 07 jari 24       merge(s, f, m, l);
2 26 Feb 07 jari 25   }
2 26 Feb 07 jari 26   
2 26 Feb 07 jari 27   return s;
2 26 Feb 07 jari 28     }
2 26 Feb 07 jari 29     
2 26 Feb 07 jari 30     public static void merge(int[] s, int f, int m, int l) {
2 26 Feb 07 jari 31   int[] temp = new int[s.length];
2 26 Feb 07 jari 32   int f1 = f;
2 26 Feb 07 jari 33   int l1 = m;
2 26 Feb 07 jari 34   int f2 = m + 1;
2 26 Feb 07 jari 35   int l2 = l;
2 26 Feb 07 jari 36   
2 26 Feb 07 jari 37   int index = f1;
2 26 Feb 07 jari 38   
2 26 Feb 07 jari 39   for (; (f1 <= l1) && (f2 <= l2); ++index) {
2 26 Feb 07 jari 40       if (s[f1] < s[f2]) {
2 26 Feb 07 jari 41     temp[index] = s[f1];
2 26 Feb 07 jari 42     ++f1;
2 26 Feb 07 jari 43       } else {
2 26 Feb 07 jari 44     temp[index] = s[f2];
2 26 Feb 07 jari 45     ++f2;
2 26 Feb 07 jari 46       }
2 26 Feb 07 jari 47   }
2 26 Feb 07 jari 48   
2 26 Feb 07 jari 49   for (; f1 <= l1; ++f1, ++index) temp[index] = s[f1];
2 26 Feb 07 jari 50   for (; f2 <= l2; ++f2, ++index) temp[index] = s[f2];
2 26 Feb 07 jari 51   for (index = f; index <= l; ++index) s[index] = temp[index];
2 26 Feb 07 jari 52     }
2 26 Feb 07 jari 53 }