Skip to content

Commit d554a7d

Browse files
committed
Add shell sort
1 parent 65bf190 commit d554a7d

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
logger._print('Original array = [' + D.join(', ') + ']');
2+
var N = D.length;
3+
4+
for (var gap = N; gap = parseInt(gap / 2);) {
5+
logger._print('');
6+
logger._print('Gap of ' + gap);
7+
for (var i = gap; i < N; i++) {
8+
tracer._select(i)._select(i - gap)._wait();
9+
var k = D[i];
10+
for (var j = i; j >= gap && k < D[j - gap]; j -= gap) {
11+
logger._print('Swap ' + D[j] + ' and ' + D[j - gap]);
12+
tracer._notify(j, D[j])._notify(j - gap, D[j - gap])._wait();
13+
D[j] = D[j - gap];
14+
tracer._denotify(i - 1)._denotify(i);
15+
}
16+
D[j] = k;
17+
tracer._notify(j,D[j]);
18+
tracer._denotify(j);
19+
tracer._deselect(i)._deselect(i - gap);
20+
}
21+
}
22+
tracer._clear();
23+
logger._print('')
24+
logger._print('Sorted array = [' + D.join(', ') + ']');
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var tracer = new Array1DTracer();
2+
var logger = new LogTracer();
3+
var D = Array1D.random(15);
4+
tracer._setData(D);

algorithm/sorting/shell/desc.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"Shellsort": "Shellsort, also known as Shell sort or Shell's method, is an in-place comparison sort. It can be seen as either a generalization of sorting by exchange (bubble sort) or sorting by insertion (insertion sort). The method starts by sorting pairs of elements far apart from each other, then progressively reducing the gap between elements to be compared.",
3+
"Complexity": {
4+
"time": "best O(n log n), average - depends on 'gap sequence'",
5+
"space": "worst O(n) total, O(1) auxilliary"
6+
},
7+
"References": [
8+
"<a href='https://en.wikipedia.org/wiki/Shellsort'>Wikipedia</a>"
9+
],
10+
"files": {
11+
"basic": "Basic"
12+
}
13+
}

0 commit comments

Comments
 (0)