 ## JavaScript Algorithms

The JavaScript algorithms collection includes implementations and examples of popular algorithms in ES6. Algorithmic snippets are primarily a learning resource, as they might already be implemented natively or require optimizations to run in production.

• ### insertionSort

JavaScript, Algorithm

Sorts an array of numbers, using the insertion sort algorithm.

• ### mergeSort

JavaScript, Algorithm

Sorts an array of numbers, using the merge sort algorithm.

• ### geometricProgression

JavaScript, Math

Initializes an array containing the numbers in the specified range where `start` and `end` are inclusive and the ratio between two terms is `step`. Returns an error if `step` equals `1`.

• ### powerset

JavaScript, Math

Returns the powerset of a given array of numbers.

• ### bubbleSort

JavaScript, Algorithm

Sorts an array of numbers, using the bubble sort algorithm.

• ### levenshteinDistance

JavaScript, String

Calculates the difference between two strings, using the Levenshtein distance algorithm.

• ### binarySearch

JavaScript, Algorithm

Finds the index of a given element in a sorted array using the binary search algorithm.

• ### fibonacci

JavaScript, Math

Generates an array, containing the Fibonacci sequence, up until the nth term.

• ### linearSearch

JavaScript, Algorithm

Finds the first index of a given element in an array using the linear search algorithm.

• ### primeFactors

JavaScript, Math

Finds the prime factors of a given number using the trial division algorithm.

• ### vectorDistance

JavaScript, Math

Calculates the distance between two vectors.

• ### shuffle

JavaScript, Array

Randomizes the order of the values of an array, returning a new array.

• ### lcm

JavaScript, Math

Calculates the least common multiple of two or more numbers.

• ### hammingDistance

JavaScript, Math

Calculates the Hamming distance between two values.

• ### binomialCoefficient

JavaScript, Math

Calculates the number of ways to choose `k` items from `n` items without repetition and without order.

2