umt 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +277 -16
- package/module/Array/groupBy.js +8 -7
- package/module/Array/groupBy.js.map +1 -1
- package/module/Array/index.d.ts +1 -0
- package/module/Array/index.js +1 -0
- package/module/Array/index.js.map +1 -1
- package/module/Array/timSort.js +2 -20
- package/module/Array/timSort.js.map +1 -1
- package/module/Array/ultraNumberSort.d.ts +7 -0
- package/module/Array/ultraNumberSort.js +373 -0
- package/module/Array/ultraNumberSort.js.map +1 -0
- package/module/Tool/pipe.d.ts +1 -1
- package/module/Tool/pipe.js.map +1 -1
- package/module/es5/Array/groupBy.js +8 -7
- package/module/es5/Array/index.d.ts +1 -0
- package/module/es5/Array/index.js +11 -0
- package/module/es5/Array/timSort.js +2 -20
- package/module/es5/Array/ultraNumberSort.d.ts +7 -0
- package/module/es5/Array/ultraNumberSort.js +475 -0
- package/module/es5/Tool/pipe.d.ts +1 -1
- package/module/es5/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ultra-fast sorting specifically optimized for number arrays
|
|
3
|
+
* @param array Array of numbers to sort
|
|
4
|
+
* @param ascending Sort in ascending order if true, descending if false
|
|
5
|
+
* @returns Sorted array
|
|
6
|
+
*/
|
|
7
|
+
export const ultraNumberSort = (array, ascending = true) => {
|
|
8
|
+
const length = array.length;
|
|
9
|
+
if (length <= 1) {
|
|
10
|
+
return array;
|
|
11
|
+
}
|
|
12
|
+
// For tiny arrays, use optimized inline sort
|
|
13
|
+
if (length === 2) {
|
|
14
|
+
if (array[0] > array[1] === ascending) {
|
|
15
|
+
[array[0], array[1]] = [array[1], array[0]];
|
|
16
|
+
}
|
|
17
|
+
return array;
|
|
18
|
+
}
|
|
19
|
+
if (length === 3) {
|
|
20
|
+
inlineSort3(array, ascending);
|
|
21
|
+
return array;
|
|
22
|
+
}
|
|
23
|
+
// Check if all numbers are integers and find range
|
|
24
|
+
let allIntegers = true;
|
|
25
|
+
let min = array[0];
|
|
26
|
+
let max = array[0];
|
|
27
|
+
let hasNaN = false;
|
|
28
|
+
for (let index = 0; index < length; index++) {
|
|
29
|
+
const value = array[index];
|
|
30
|
+
// biome-ignore lint/suspicious/noSelfCompare: <explanation>
|
|
31
|
+
if (value !== value) {
|
|
32
|
+
hasNaN = true;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
if (value < min) {
|
|
36
|
+
min = value;
|
|
37
|
+
}
|
|
38
|
+
if (value > max) {
|
|
39
|
+
max = value;
|
|
40
|
+
}
|
|
41
|
+
if (allIntegers && value !== Math.floor(value)) {
|
|
42
|
+
allIntegers = false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Handle NaN values
|
|
46
|
+
if (hasNaN) {
|
|
47
|
+
return handleNaNSort(array, ascending);
|
|
48
|
+
}
|
|
49
|
+
// For small integer ranges, use counting sort
|
|
50
|
+
if (allIntegers && max - min < length * 2 && max - min < 1_000_000) {
|
|
51
|
+
return countingSort(array, min, max, ascending);
|
|
52
|
+
}
|
|
53
|
+
// For larger arrays, use radix sort if applicable
|
|
54
|
+
if (allIntegers && length > 100) {
|
|
55
|
+
return radixSort(array, ascending);
|
|
56
|
+
}
|
|
57
|
+
// Fall back to optimized quicksort for floating point
|
|
58
|
+
return numericQuickSort(array, 0, length - 1, ascending);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Inline sort for 3 elements
|
|
62
|
+
*/
|
|
63
|
+
const inlineSort3 = (array, ascending) => {
|
|
64
|
+
let a = array[0];
|
|
65
|
+
let b = array[1];
|
|
66
|
+
let c = array[2];
|
|
67
|
+
if (ascending) {
|
|
68
|
+
if (a > b) {
|
|
69
|
+
[a, b] = [b, a];
|
|
70
|
+
}
|
|
71
|
+
if (b > c) {
|
|
72
|
+
[b, c] = [c, b];
|
|
73
|
+
if (a > b) {
|
|
74
|
+
[a, b] = [b, a];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
if (a < b) {
|
|
80
|
+
[a, b] = [b, a];
|
|
81
|
+
}
|
|
82
|
+
if (b < c) {
|
|
83
|
+
[b, c] = [c, b];
|
|
84
|
+
if (a < b) {
|
|
85
|
+
[a, b] = [b, a];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
array[0] = a;
|
|
90
|
+
array[1] = b;
|
|
91
|
+
array[2] = c;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Handle arrays with NaN values
|
|
95
|
+
*/
|
|
96
|
+
const handleNaNSort = (array, ascending) => {
|
|
97
|
+
const valid = [];
|
|
98
|
+
let nanCount = 0;
|
|
99
|
+
for (const element of array) {
|
|
100
|
+
// biome-ignore lint/suspicious/noSelfCompare: <explanation>
|
|
101
|
+
if (element === element) {
|
|
102
|
+
valid.push(element);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
nanCount++;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
numericQuickSort(valid, 0, valid.length - 1, ascending);
|
|
109
|
+
// NaN values go to the end
|
|
110
|
+
for (let index = 0; index < nanCount; index++) {
|
|
111
|
+
valid.push(Number.NaN);
|
|
112
|
+
}
|
|
113
|
+
// Copy back
|
|
114
|
+
for (let index = 0; index < array.length; index++) {
|
|
115
|
+
array[index] = valid[index];
|
|
116
|
+
}
|
|
117
|
+
return array;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Counting sort for small integer ranges
|
|
121
|
+
*/
|
|
122
|
+
const countingSort = (array, min, max, ascending) => {
|
|
123
|
+
const range = max - min + 1;
|
|
124
|
+
const count = new Uint32Array(range);
|
|
125
|
+
// Count occurrences
|
|
126
|
+
for (const element of array) {
|
|
127
|
+
count[element - min]++;
|
|
128
|
+
}
|
|
129
|
+
// Reconstruct array
|
|
130
|
+
let index = 0;
|
|
131
|
+
if (ascending) {
|
|
132
|
+
for (let index_ = 0; index_ < range; index_++) {
|
|
133
|
+
const cnt = count[index_];
|
|
134
|
+
const value = index_ + min;
|
|
135
|
+
for (let index_ = 0; index_ < cnt; index_++) {
|
|
136
|
+
array[index++] = value;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
for (let index_ = range - 1; index_ >= 0; index_--) {
|
|
142
|
+
const cnt = count[index_];
|
|
143
|
+
const value = index_ + min;
|
|
144
|
+
for (let index_ = 0; index_ < cnt; index_++) {
|
|
145
|
+
array[index++] = value;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return array;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Radix sort for integers
|
|
153
|
+
*/
|
|
154
|
+
const radixSort = (array, ascending) => {
|
|
155
|
+
const length = array.length;
|
|
156
|
+
// Separate positive and negative numbers
|
|
157
|
+
const positive = [];
|
|
158
|
+
const negative = [];
|
|
159
|
+
let zeroCount = 0;
|
|
160
|
+
for (let index_ = 0; index_ < length; index_++) {
|
|
161
|
+
if (array[index_] > 0) {
|
|
162
|
+
positive.push(array[index_]);
|
|
163
|
+
}
|
|
164
|
+
else if (array[index_] < 0) {
|
|
165
|
+
negative.push(-array[index_]);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
zeroCount++;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Sort positive numbers
|
|
172
|
+
if (positive.length > 0) {
|
|
173
|
+
radixSortPositive(positive);
|
|
174
|
+
}
|
|
175
|
+
// Sort negative numbers
|
|
176
|
+
if (negative.length > 0) {
|
|
177
|
+
radixSortPositive(negative);
|
|
178
|
+
}
|
|
179
|
+
// Merge results
|
|
180
|
+
let index = 0;
|
|
181
|
+
if (ascending) {
|
|
182
|
+
// Negative numbers first (in reverse order)
|
|
183
|
+
for (let index_ = negative.length - 1; index_ >= 0; index_--) {
|
|
184
|
+
array[index++] = -negative[index_];
|
|
185
|
+
}
|
|
186
|
+
// Zeros
|
|
187
|
+
for (let index_ = 0; index_ < zeroCount; index_++) {
|
|
188
|
+
array[index++] = 0;
|
|
189
|
+
}
|
|
190
|
+
// Positive numbers
|
|
191
|
+
for (const element of positive) {
|
|
192
|
+
array[index++] = element;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Positive numbers first (in reverse order)
|
|
197
|
+
for (let index_ = positive.length - 1; index_ >= 0; index_--) {
|
|
198
|
+
array[index++] = positive[index_];
|
|
199
|
+
}
|
|
200
|
+
// Zeros
|
|
201
|
+
for (let index_ = 0; index_ < zeroCount; index_++) {
|
|
202
|
+
array[index++] = 0;
|
|
203
|
+
}
|
|
204
|
+
// Negative numbers
|
|
205
|
+
for (const element of negative) {
|
|
206
|
+
array[index++] = -element;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return array;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Radix sort for positive integers
|
|
213
|
+
*/
|
|
214
|
+
const radixSortPositive = (array) => {
|
|
215
|
+
const length = array.length;
|
|
216
|
+
if (length <= 1) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Find maximum to determine number of digits
|
|
220
|
+
let max = array[0];
|
|
221
|
+
for (let index = 1; index < length; index++) {
|
|
222
|
+
if (array[index] > max) {
|
|
223
|
+
max = array[index];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Use typed arrays for better performance
|
|
227
|
+
const output = new Float64Array(length);
|
|
228
|
+
const count = new Uint32Array(256);
|
|
229
|
+
// Process 8 bits at a time
|
|
230
|
+
for (let shift = 0; max >> shift > 0; shift += 8) {
|
|
231
|
+
// Reset count array
|
|
232
|
+
count.fill(0);
|
|
233
|
+
// Count occurrences
|
|
234
|
+
for (let index = 0; index < length; index++) {
|
|
235
|
+
const digit = (array[index] >> shift) & 0xff;
|
|
236
|
+
count[digit]++;
|
|
237
|
+
}
|
|
238
|
+
// Change count[i] to actual position
|
|
239
|
+
for (let index = 1; index < 256; index++) {
|
|
240
|
+
count[index] += count[index - 1];
|
|
241
|
+
}
|
|
242
|
+
// Build output array
|
|
243
|
+
for (let index = length - 1; index >= 0; index--) {
|
|
244
|
+
const digit = (array[index] >> shift) & 0xff;
|
|
245
|
+
output[--count[digit]] = array[index];
|
|
246
|
+
}
|
|
247
|
+
// Copy back
|
|
248
|
+
for (let index = 0; index < length; index++) {
|
|
249
|
+
array[index] = output[index];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Optimized quicksort for numbers
|
|
255
|
+
*/
|
|
256
|
+
const numericQuickSort = (array, low, high, ascending) => {
|
|
257
|
+
const stack = [];
|
|
258
|
+
stack.push(low, high);
|
|
259
|
+
while (stack.length > 0) {
|
|
260
|
+
const h = stack.pop();
|
|
261
|
+
const l = stack.pop();
|
|
262
|
+
if (h === undefined || l === undefined || h <= l) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
// For small subarrays, use insertion sort
|
|
266
|
+
if (h - l < 16) {
|
|
267
|
+
numericInsertionSort(array, l, h, ascending);
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
// Partition
|
|
271
|
+
const pivot = numericPartition(array, l, h, ascending);
|
|
272
|
+
// Push larger partition first to limit stack depth
|
|
273
|
+
if (pivot - l > h - pivot) {
|
|
274
|
+
stack.push(l, pivot - 1, pivot + 1, h);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
stack.push(pivot + 1, h, l, pivot - 1);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return array;
|
|
281
|
+
};
|
|
282
|
+
/**
|
|
283
|
+
* Numeric insertion sort
|
|
284
|
+
*/
|
|
285
|
+
const numericInsertionSort = (array, low, high, ascending) => {
|
|
286
|
+
if (ascending) {
|
|
287
|
+
for (let index = low + 1; index <= high; index++) {
|
|
288
|
+
const key = array[index];
|
|
289
|
+
let index_ = index - 1;
|
|
290
|
+
while (index_ >= low && array[index_] > key) {
|
|
291
|
+
array[index_ + 1] = array[index_];
|
|
292
|
+
index_--;
|
|
293
|
+
}
|
|
294
|
+
array[index_ + 1] = key;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
for (let index = low + 1; index <= high; index++) {
|
|
299
|
+
const key = array[index];
|
|
300
|
+
let index_ = index - 1;
|
|
301
|
+
while (index_ >= low && array[index_] < key) {
|
|
302
|
+
array[index_ + 1] = array[index_];
|
|
303
|
+
index_--;
|
|
304
|
+
}
|
|
305
|
+
array[index_ + 1] = key;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
/**
|
|
310
|
+
* Numeric partition with median-of-three pivot
|
|
311
|
+
*/
|
|
312
|
+
const numericPartition = (array, low, high, ascending) => {
|
|
313
|
+
// Median-of-three pivot selection
|
|
314
|
+
const mid = low + ((high - low) >> 1);
|
|
315
|
+
if (ascending) {
|
|
316
|
+
if (array[mid] < array[low]) {
|
|
317
|
+
[array[low], array[mid]] = [array[mid], array[low]];
|
|
318
|
+
}
|
|
319
|
+
if (array[high] < array[low]) {
|
|
320
|
+
[array[low], array[high]] = [array[high], array[low]];
|
|
321
|
+
}
|
|
322
|
+
if (array[high] < array[mid]) {
|
|
323
|
+
[array[mid], array[high]] = [array[high], array[mid]];
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
if (array[mid] > array[low]) {
|
|
328
|
+
[array[low], array[mid]] = [array[mid], array[low]];
|
|
329
|
+
}
|
|
330
|
+
if (array[high] > array[low]) {
|
|
331
|
+
[array[low], array[high]] = [array[high], array[low]];
|
|
332
|
+
}
|
|
333
|
+
if (array[high] > array[mid]) {
|
|
334
|
+
[array[mid], array[high]] = [array[high], array[mid]];
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// Move pivot to end-1
|
|
338
|
+
[array[mid], array[high - 1]] = [array[high - 1], array[mid]];
|
|
339
|
+
const pivot = array[high - 1];
|
|
340
|
+
let index = low;
|
|
341
|
+
let index_ = high - 1;
|
|
342
|
+
if (ascending) {
|
|
343
|
+
while (true) {
|
|
344
|
+
while (array[++index] < pivot) {
|
|
345
|
+
// Continue
|
|
346
|
+
}
|
|
347
|
+
while (array[--index_] > pivot) {
|
|
348
|
+
// Continue
|
|
349
|
+
}
|
|
350
|
+
if (index >= index_) {
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
[array[index], array[index_]] = [array[index_], array[index]];
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
while (true) {
|
|
358
|
+
while (array[++index] > pivot) {
|
|
359
|
+
// Continue
|
|
360
|
+
}
|
|
361
|
+
while (array[--index_] < pivot) {
|
|
362
|
+
// Continue
|
|
363
|
+
}
|
|
364
|
+
if (index >= index_) {
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
[array[index], array[index_]] = [array[index_], array[index]];
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
[array[index], array[high - 1]] = [array[high - 1], array[index]];
|
|
371
|
+
return index;
|
|
372
|
+
};
|
|
373
|
+
//# sourceMappingURL=ultraNumberSort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultraNumberSort.js","sourceRoot":"","sources":["../../src/Array/ultraNumberSort.ts"],"names":[],"mappings":"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"}
|
package/module/Tool/pipe.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare class Pipe<T> {
|
|
|
51
51
|
* @param predicate Condition function that determines if value should be filtered
|
|
52
52
|
* @returns New Pipe instance with Result containing filtered value or error
|
|
53
53
|
*/
|
|
54
|
-
filterResult<U extends T>(predicate: (input: T) => input is U): Pipe<Result<U,
|
|
54
|
+
filterResult<U extends T, E extends Error = Error>(predicate: (input: T) => input is U): Pipe<Result<U, E>>;
|
|
55
55
|
/**
|
|
56
56
|
* Terminates the pipeline and returns the final value
|
|
57
57
|
* @returns Final result of the pipeline processing
|
package/module/Tool/pipe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAO,GAAG,EAAE;YACrB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -15,12 +15,13 @@ exports.groupBy = void 0;
|
|
|
15
15
|
* groupBy(["apple", "banana", "carrot"], (str) => str[0]); // { 'a': ['apple'], 'b': ['banana'], 'c': ['carrot'] }
|
|
16
16
|
*/
|
|
17
17
|
var groupBy = exports.groupBy = function groupBy(array, iteratee) {
|
|
18
|
-
|
|
18
|
+
var result = Object.create(null);
|
|
19
|
+
var length = array.length;
|
|
20
|
+
for (var index = 0; index < length; index++) {
|
|
21
|
+
var value = array[index];
|
|
19
22
|
var key = iteratee(value, index, array);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return accumulator;
|
|
25
|
-
}, {});
|
|
23
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
|
|
24
|
+
(result[key] || (result[key] = [])).push(value);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
26
27
|
};
|
|
@@ -245,6 +245,17 @@ Object.keys(_timSort).forEach(function (key) {
|
|
|
245
245
|
}
|
|
246
246
|
});
|
|
247
247
|
});
|
|
248
|
+
var _ultraNumberSort = require("./ultraNumberSort");
|
|
249
|
+
Object.keys(_ultraNumberSort).forEach(function (key) {
|
|
250
|
+
if (key === "default" || key === "__esModule") return;
|
|
251
|
+
if (key in exports && exports[key] === _ultraNumberSort[key]) return;
|
|
252
|
+
Object.defineProperty(exports, key, {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function get() {
|
|
255
|
+
return _ultraNumberSort[key];
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
});
|
|
248
259
|
var _zip = require("./zip");
|
|
249
260
|
Object.keys(_zip).forEach(function (key) {
|
|
250
261
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -5,27 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.timSort = void 0;
|
|
7
7
|
var _compareFunctionDefault = require("./compareFunctionDefault");
|
|
8
|
+
var _insertionSort = require("@/Array/insertionSort");
|
|
8
9
|
var MIN_RUN = 32;
|
|
9
10
|
|
|
10
|
-
/**
|
|
11
|
-
* Sorts a portion of the array using insertion sort algorithm
|
|
12
|
-
* @param array Array to sort
|
|
13
|
-
* @param start Starting index of the range to sort
|
|
14
|
-
* @param end Ending index of the range to sort
|
|
15
|
-
* @param compareFunction Function to compare elements
|
|
16
|
-
*/
|
|
17
|
-
var insertionSort = function insertionSort(array, start, end, compareFunction) {
|
|
18
|
-
for (var index = start + 1; index <= end; index++) {
|
|
19
|
-
var temporary = array[index];
|
|
20
|
-
var currentIndex = index - 1;
|
|
21
|
-
while (currentIndex >= start && compareFunction(array[currentIndex], temporary) > 0) {
|
|
22
|
-
array[currentIndex + 1] = array[currentIndex];
|
|
23
|
-
currentIndex--;
|
|
24
|
-
}
|
|
25
|
-
array[currentIndex + 1] = temporary;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
11
|
/**
|
|
30
12
|
* Merges two sorted portions of the array
|
|
31
13
|
* @param array Array containing the portions to merge
|
|
@@ -100,7 +82,7 @@ var timSort = exports.timSort = function timSort(array) {
|
|
|
100
82
|
var n = end - start + 1;
|
|
101
83
|
var minRun = getMinRunLength(n);
|
|
102
84
|
for (var index = start; index <= end; index += minRun) {
|
|
103
|
-
insertionSort(array, index, Math.min(index + MIN_RUN - 1, end)
|
|
85
|
+
(0, _insertionSort.insertionSort)(array, compareFunction, index, Math.min(index + MIN_RUN - 1, end));
|
|
104
86
|
}
|
|
105
87
|
for (var size = minRun; size < n; size *= 2) {
|
|
106
88
|
for (var left = start; left <= end; left += 2 * size) {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ultra-fast sorting specifically optimized for number arrays
|
|
3
|
+
* @param array Array of numbers to sort
|
|
4
|
+
* @param ascending Sort in ascending order if true, descending if false
|
|
5
|
+
* @returns Sorted array
|
|
6
|
+
*/
|
|
7
|
+
export declare const ultraNumberSort: (array: number[], ascending?: boolean) => number[];
|