UNPKG

merge-sort-nat

Version:

Merge sort library made for testing class

49 lines (48 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeSort = void 0; function merge(leftArray, rightArray, compareFunction) { var resultArray = []; var i = 0; var j = 0; while (i < leftArray.length && j < rightArray.length) { if (compareFunction(leftArray[i], rightArray[j]) < 0) { resultArray.push(leftArray[i]); i++; } else { resultArray.push(rightArray[j]); j++; } } while (i < leftArray.length) { resultArray.push(leftArray[i]); i++; } while (j < rightArray.length) { resultArray.push(rightArray[j]); j++; } return resultArray; } /** * Sorts array with merge sort algorithm * @param array Array to sort * @param compareFunction Compares two values of array. If output of function is below 0, it takes firstElement, else if output is above 0, it takes secondElement, else if output is equal 0, it does not change order of elements * @returns New sorted array * @example * Example of sorting array: * ```js * let sortedArray = mergeSort([5, 4, 3, 2, 1] (a, b) => a - b); // Sort array in ascending order * ``` */ function mergeSort(array, compareFunction) { if (array.length <= 1) { return array; } var middleIndex = Math.floor(array.length / 2); var leftArray = mergeSort(array.slice(0, middleIndex), compareFunction); var rightArray = mergeSort(array.slice(middleIndex), compareFunction); return merge(leftArray, rightArray, compareFunction); } exports.mergeSort = mergeSort;