2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2003, The Institute for Genomic Research (TIGR). |
2 |
26 Feb 07 |
jari |
All rights reserved. |
2 |
26 Feb 07 |
jari |
4 |
*/ |
2 |
26 Feb 07 |
jari |
5 |
/* |
2 |
26 Feb 07 |
jari |
* $RCSfile: Sort.java,v $ |
2 |
26 Feb 07 |
jari |
* $Revision: 1.1.1.1 $ |
2 |
26 Feb 07 |
jari |
* $Date: 2003/08/21 21:04:23 $ |
2 |
26 Feb 07 |
jari |
* $Author: braisted $ |
2 |
26 Feb 07 |
jari |
* $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 |
} |