From d3a55cd02984ec2cab95f8e294e6446c1697ba6b Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Fri, 26 Jul 2019 16:45:59 -0400 Subject: [PATCH] Add sorting functions --- src/sorting.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/sorting.js diff --git a/src/sorting.js b/src/sorting.js new file mode 100644 index 0000000..192d42e --- /dev/null +++ b/src/sorting.js @@ -0,0 +1,44 @@ +function swap (items, firstIndex, secondIndex) { + let temp = items[firstIndex]; + items[firstIndex] = items[secondIndex]; + items[secondIndex] = temp; +} + +export function bubbleSort (items) { + let len = items.length; + let stop = 0; + + for (let i = 0; i < len; i++) { + for (let j = 0; stop=len-i, j < stop; j++) { + if (items[j] > items[j+1]) { + swap(items, j, j+1); + } + } + } + + return items; +} + +export function selectionSort (items) { + let len = items.length; + let min = 0; + let j = 0; + + for (let i = 0; i < len; i++) { + min = i; + + // Check to see if anything is smaller + for (j=i+1; j < len; j++) { + if (items[j] < items[min]) { + min = j; + } + } + + // If the minimum isn't where it should be, swap it + if (i !== min) { + swap(items, i, min); + } + } + + return items; +} \ No newline at end of file