forked from TheAlgorithms/JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShellSort.js
36 lines (31 loc) · 811 Bytes
/
ShellSort.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
* 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)