Merge pull request #199 from archie94/pigeonhole-sort · GeekWorkCode/AlgorithmVisualizer@b0c446c · GitHub
Skip to content

Commit b0c446c

Browse files
authored
Merge pull request algorithm-visualizer#199 from archie94/pigeonhole-sort
Implemented Pigeonhole Sort
2 parents 7c94540 + 29ddfdf commit b0c446c

4 files changed

Lines changed: 63 additions & 1 deletion

File tree

algorithm/category.json

Lines changed: 2 additions & 1 deletion
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
var min = A[0];
2+
var max = A[0];
3+
4+
for( var i = 1; i < N; i++ ) {
5+
if( A[i] < min ) {
6+
min = A[i];
7+
}
8+
if( A[i] > max ) {
9+
max = A[i];
10+
}
11+
}
12+
var range = max - min + 1;
13+
14+
var holes = new Array ( range );
15+
for ( var i = 0; i < range; i++ ) {
16+
holes[i] = [];
17+
}
18+
tracer2._setData( holes );
19+
20+
logTracer._print ( 'Filling up holes' );
21+
for ( var i = 0; i < N ; i++ ) {
22+
tracer1._select ( i )._wait ();
23+
24+
holes[ A[i] - min ].push( A[i] );
25+
26+
tracer2._setData( holes );
27+
tracer1._deselect ( i );
28+
}
29+
30+
logTracer._print ( 'Building sorted array' );
31+
var k = 0;
32+
for ( var i = 0; i < range ; i++ ) {
33+
for (var j = 0; j < holes[i].length; j++ ) {
34+
tracer2._select ( i, j )._wait ();
35+
A[k++] = holes[i][j];
36+
tracer1._notify ( k-1, A[k-1] )._wait ();
37+
tracer2._deselect ( i, j );
38+
tracer1._denotify ( k-1 );
39+
}
40+
}
41+
42+
logTracer._print ( 'Sorted array is ' + A );
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var A = Array1D.random(7);
2+
var N = A.length;
3+
4+
var tracer1 = new Array1DTracer ( 'Array' )._setData ( A );
5+
var tracer2 = new Array2DTracer ( 'Holes' );
6+
var logTracer = new LogTracer ( 'Console' );
Lines changed: 13 additions & 0 deletions

0 commit comments

Comments
 (0)