Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 36d7778

Browse files
authored
Merge pull request #20 from KuLi/shellSort
Implemented shell sort algorithm
2 parents 2f362c9 + a0e06d3 commit 36d7778

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

‎Sorts/shellSort.js‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Shell Sort sorts an array based on insertion sort algorithm
3+
* more information: https://en.wikipedia.org/wiki/Shellsort
4+
*
5+
*/
6+
function shellSort(items) {
7+
8+
var interval = 1;
9+
10+
while (interval < items.length / 3) {
11+
12+
interval = interval * 3 + 1;
13+
}
14+
15+
while (interval > 0) {
16+
17+
for (var outer = interval; outer < items.length; outer++) {
18+
19+
var value = items[outer];
20+
var inner = outer;
21+
22+
while (inner > interval - 1 && items[inner - interval] >= value) {
23+
items[inner] = items[inner - interval];
24+
inner = inner - interval;
25+
}
26+
items[inner] = value;
27+
}
28+
interval = (interval - 1) / 3;
29+
}
30+
return items;
31+
}
32+
33+
//Implementation of shellSort
34+
35+
var ar = [5, 6, 7, 8, 1, 2, 12, 14];
36+
//Array before Sort
37+
console.log(ar);
38+
shellSort(ar);
39+
//Array after sort
40+
console.log(ar);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /