1 Clazz.declarePackage ("jalview.util");
\r
2 Clazz.load (null, "jalview.util.QuickSort", ["java.lang.Float", "java.util.Arrays"], function () {
\r
3 c$ = Clazz.declareType (jalview.util, "QuickSort");
\r
4 c$.sortInt = Clazz.defineMethod (c$, "sortInt",
\r
6 jalview.util.QuickSort.sortInt (arr, 0, arr.length - 1, s);
\r
8 c$.sortFloatObject = Clazz.defineMethod (c$, "sortFloatObject",
\r
10 jalview.util.QuickSort.sortFloat (arr, 0, arr.length - 1, s);
\r
12 c$.sortDouble = Clazz.defineMethod (c$, "sortDouble",
\r
14 jalview.util.QuickSort.sortDouble (arr, 0, arr.length - 1, s);
\r
16 c$.sort = Clazz.defineMethod (c$, "sort",
\r
18 jalview.util.QuickSort.stringSort (arr, 0, arr.length - 1, s);
\r
20 c$.stringSort = Clazz.defineMethod (c$, "stringSort",
\r
21 ($fz = function (arr, p, r, s) {
\r
24 q = jalview.util.QuickSort.stringPartition (arr, p, r, s);
\r
25 jalview.util.QuickSort.stringSort (arr, p, q, s);
\r
26 jalview.util.QuickSort.stringSort (arr, q + 1, r, s);
\r
27 }}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
28 c$.sortFloat = Clazz.defineMethod (c$, "sortFloat",
\r
29 ($fz = function (arr, p, r, s) {
\r
32 q = jalview.util.QuickSort.partitionFloat (arr, p, r, s);
\r
33 jalview.util.QuickSort.sortFloat (arr, p, q, s);
\r
34 jalview.util.QuickSort.sortFloat (arr, q + 1, r, s);
\r
35 }}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
36 c$.sortInt = Clazz.defineMethod (c$, "sortInt",
\r
37 ($fz = function (arr, p, r, s) {
\r
40 q = jalview.util.QuickSort.partitionInt (arr, p, r, s);
\r
41 jalview.util.QuickSort.sortInt (arr, p, q, s);
\r
42 jalview.util.QuickSort.sortInt (arr, q + 1, r, s);
\r
43 }}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
44 c$.partitionFloat = Clazz.defineMethod (c$, "partitionFloat",
\r
45 ($fz = function (arr, p, r, s) {
\r
52 } while (arr[j] > x);
\r
55 } while (arr[i] < x);
\r
66 }, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
67 c$.partitionInt = Clazz.defineMethod (c$, "partitionInt",
\r
68 ($fz = function (arr, p, r, s) {
\r
75 } while (arr[j] > x);
\r
78 } while (arr[i] < x);
\r
89 }, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
90 c$.stringPartition = Clazz.defineMethod (c$, "stringPartition",
\r
91 ($fz = function (arr, p, r, s) {
\r
98 } while (arr[j].compareTo (x) < 0);
\r
101 } while (arr[i].compareTo (x) > 0);
\r
112 }, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
\r
113 c$.sortFloatChar = Clazz.defineMethod (c$, "sortFloatChar",
\r
114 function (arr, s) {
\r
115 var f1 = Clazz.newFloatArray (arr.length, 0);
\r
116 var s1 = Clazz.newCharArray (s.length, '\0');
\r
117 var nextZeroValue = 0;
\r
118 var nextNonZeroValue = arr.length - 1;
\r
119 for (var i = 0; i < arr.length; i++) {
\r
122 f1[nextNonZeroValue] = val;
\r
123 s1[nextNonZeroValue] = s[i];
\r
124 nextNonZeroValue--;
\r
126 f1[nextZeroValue] = val;
\r
127 s1[nextZeroValue] = s[i];
\r
130 System.arraycopy (f1, 0, arr, 0, nextZeroValue);
\r
131 System.arraycopy (s1, 0, s, 0, nextZeroValue);
\r
132 if (nextZeroValue == arr.length) {
\r
134 }var nonZeroFloats = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
\r
135 var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
\r
136 jalview.util.QuickSort.externalSortFloat (nonZeroFloats, nonZeroChars);
\r
137 System.arraycopy (nonZeroFloats, 0, arr, nextZeroValue, nonZeroFloats.length);
\r
138 System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
\r
140 c$.externalSortFloat = Clazz.defineMethod (c$, "externalSortFloat",
\r
141 ($fz = function (arr, s) {
\r
142 var length = arr.length;
\r
143 var indices = jalview.util.QuickSort.makeIndexArray (length);
\r
144 java.util.Arrays.sort (indices, new jalview.util.QuickSort.FloatComparator (arr));
\r
145 var sortedFloats = Clazz.newFloatArray (length, 0);
\r
146 var sortedChars = Clazz.newCharArray (s.length, '\0');
\r
147 for (var i = 0; i < length; i++) {
\r
148 sortedFloats[i] = arr[indices[i]];
\r
149 sortedChars[i] = s[indices[i]];
\r
151 System.arraycopy (sortedFloats, 0, arr, 0, length);
\r
152 System.arraycopy (sortedChars, 0, s, 0, s.length);
\r
153 }, $fz.isPrivate = true, $fz), "~A,~A");
\r
154 c$.makeIndexArray = Clazz.defineMethod (c$, "makeIndexArray",
\r
155 ($fz = function (length) {
\r
156 var indices = new Array (length);
\r
157 for (var i = 0; i < length; i++) {
\r
158 indices[i] = new Integer (i);
\r
161 }, $fz.isPrivate = true, $fz), "~N");
\r
162 c$.sortIntChar = Clazz.defineMethod (c$, "sortIntChar",
\r
163 function (arr, s) {
\r
164 var f1 = Clazz.newIntArray (arr.length, 0);
\r
165 var s1 = Clazz.newCharArray (s.length, '\0');
\r
166 var nextZeroValue = 0;
\r
167 var nextNonZeroValue = arr.length - 1;
\r
168 for (var i = 0; i < arr.length; i++) {
\r
171 f1[nextNonZeroValue] = val;
\r
172 s1[nextNonZeroValue] = s[i];
\r
173 nextNonZeroValue--;
\r
175 f1[nextZeroValue] = val;
\r
176 s1[nextZeroValue] = s[i];
\r
179 System.arraycopy (f1, 0, arr, 0, nextZeroValue);
\r
180 System.arraycopy (s1, 0, s, 0, nextZeroValue);
\r
181 if (nextZeroValue == arr.length) {
\r
183 }var nonZeroInts = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
\r
184 var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
\r
185 jalview.util.QuickSort.externalSortInt (nonZeroInts, nonZeroChars);
\r
186 System.arraycopy (nonZeroInts, 0, arr, nextZeroValue, nonZeroInts.length);
\r
187 System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
\r
189 c$.externalSortInt = Clazz.defineMethod (c$, "externalSortInt",
\r
190 ($fz = function (arr, s) {
\r
191 var length = arr.length;
\r
192 var indices = jalview.util.QuickSort.makeIndexArray (length);
\r
193 java.util.Arrays.sort (indices, new jalview.util.QuickSort.IntComparator (arr));
\r
194 var sortedInts = Clazz.newIntArray (length, 0);
\r
195 var sortedChars = Clazz.newCharArray (s.length, '\0');
\r
196 for (var i = 0; i < length; i++) {
\r
197 sortedInts[i] = arr[indices[i]];
\r
198 sortedChars[i] = s[indices[i]];
\r
200 System.arraycopy (sortedInts, 0, arr, 0, length);
\r
201 System.arraycopy (sortedChars, 0, s, 0, s.length);
\r
202 }, $fz.isPrivate = true, $fz), "~A,~A");
\r
204 c$ = Clazz.decorateAsClass (function () {
\r
205 this.values = null;
\r
206 Clazz.instantialize (this, arguments);
\r
207 }, jalview.util.QuickSort, "FloatComparator", null, java.util.Comparator);
\r
208 Clazz.makeConstructor (c$,
\r
212 Clazz.overrideMethod (c$, "compare",
\r
214 return Float.compare (this.values[a.intValue ()], this.values[b]);
\r
215 }, "Integer,Integer");
\r
218 c$ = Clazz.decorateAsClass (function () {
\r
219 this.values = null;
\r
220 Clazz.instantialize (this, arguments);
\r
221 }, jalview.util.QuickSort, "IntComparator", null, java.util.Comparator);
\r
222 Clazz.makeConstructor (c$,
\r
226 Clazz.overrideMethod (c$, "compare",
\r
228 return Integer.compare (this.values[a], this.values[b]);
\r
229 }, "Integer,Integer");
\r