From a0e06d3ea80b1d47d2d32f81168d263d6b0b3c44 Mon Sep 17 00:00:00 2001 From: KuLi Date: Sat, 30 Sep 2017 19:59:06 +0200 Subject: [PATCH] Implemented shell sort algorithm --- Sorts/shellSort.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Sorts/shellSort.js diff --git a/Sorts/shellSort.js b/Sorts/shellSort.js new file mode 100644 index 000000000..1d32a1899 --- /dev/null +++ b/Sorts/shellSort.js @@ -0,0 +1,40 @@ +/* + * Shell Sort sorts an array based on insertion sort algorithm + * more information: https://en.wikipedia.org/wiki/Shellsort + * + */ +function shellSort(items) { + + var interval = 1; + + while (interval < items.length / 3) { + + interval = interval * 3 + 1; + } + + while (interval > 0) { + + for (var outer = interval; outer < items.length; outer++) { + + var value = items[outer]; + var inner = outer; + + while (inner > interval - 1 && items[inner - interval] >= value) { + items[inner] = items[inner - interval]; + inner = inner - interval; + } + items[inner] = value; + } + interval = (interval - 1) / 3; + } + return items; +} + +//Implementation of shellSort + +var ar = [5, 6, 7, 8, 1, 2, 12, 14]; +//Array before Sort +console.log(ar); +shellSort(ar); +//Array after sort +console.log(ar);