mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 08:12:00 +02:00

* build/refactor: move lint/prettier packages to project root, install husky, add pre-commit hook * refactor: reformat files * build: put full eslintrc back with all rules
29 lines
765 B
JavaScript
29 lines
765 B
JavaScript
function mergeSort(arr, compareFn) {
|
|
if (arr.length <= 1) {
|
|
return arr;
|
|
}
|
|
|
|
const mid = Math.floor(arr.length / 2);
|
|
const leftArr = arr.slice(0, mid);
|
|
const rightArr = arr.slice(mid);
|
|
|
|
return merge(mergeSort(leftArr, compareFn), mergeSort(rightArr, compareFn), compareFn);
|
|
}
|
|
|
|
function merge(leftArr, rightArr, compareFn) {
|
|
const result = [];
|
|
let leftIndex = 0;
|
|
let rightIndex = 0;
|
|
|
|
while (leftIndex < leftArr.length && rightIndex < rightArr.length) {
|
|
if (compareFn(leftArr[leftIndex], rightArr[rightIndex]) < 0) {
|
|
result.push(leftArr[leftIndex++]);
|
|
} else {
|
|
result.push(rightArr[rightIndex++]);
|
|
}
|
|
}
|
|
|
|
return result.concat(leftArr.slice(leftIndex)).concat(rightArr.slice(rightIndex));
|
|
}
|
|
|
|
module.exports = mergeSort;
|