UNPKG

js-dsa-utils

Version:

Basic DSA utilities (sorting, searching, stack, queue,linked list etc.)

67 lines (61 loc) 1.48 kB
// Bubble Sort function bubbleSort(arr) { const res = [...arr]; for (let i = 0; i < res.length - 1; i++) { for (let j = 0; j < res.length - i - 1; j++) { if (res[j] > res[j + 1]) { [res[j], res[j + 1]] = [res[j + 1], res[j]]; } } } return res; } // Selection Sort function selectionSort(arr) { const res = [...arr]; for (let i = 0; i < res.length; i++) { let min = i; for (let j = i + 1; j < res.length; j++) { if (res[j] < res[min]) min = j; } [res[i], res[min]] = [res[min], res[i]]; } return res; } // Insertion Sort function insertionSort(arr) { const res = [...arr]; for (let i = 1; i < res.length; i++) { let key = res[i]; let j = i - 1; while (j >= 0 && res[j] > key) { res[j + 1] = res[j]; j--; } res[j + 1] = key; } return res; } // Merge Sort function mergeSort(arr) { if (arr.length <= 1) return arr; const mid = Math.floor(arr.length / 2); const left = mergeSort(arr.slice(0, mid)); const right = mergeSort(arr.slice(mid)); return merge(left, right); } function merge(left, right) { let result = [], i = 0, j = 0; while (i < left.length && j < right.length) { result.push(left[i] < right[j] ? left[i++] : right[j++]); } return result.concat(left.slice(i)).concat(right.slice(j)); } module.exports = { bubbleSort, selectionSort, insertionSort, mergeSort, };