forked from algorithm-visualizer/algorithm-visualizer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode.js
More file actions
42 lines (35 loc) · 840 Bytes
/
code.js
File metadata and controls
42 lines (35 loc) · 840 Bytes
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
37
38
39
40
41
42
var min = A[0];
var max = A[0];
for( var i = 1; i < N; i++ ) {
if( A[i] < min ) {
min = A[i];
}
if( A[i] > max ) {
max = A[i];
}
}
var range = max - min + 1;
var holes = new Array ( range );
for ( var i = 0; i < range; i++ ) {
holes[i] = [];
}
tracer2._setData( holes );
logTracer._print ( 'Filling up holes' );
for ( var i = 0; i < N ; i++ ) {
tracer1._select ( i )._wait ();
holes[ A[i] - min ].push( A[i] );
tracer2._setData( holes );
tracer1._deselect ( i );
}
logTracer._print ( 'Building sorted array' );
var k = 0;
for ( var i = 0; i < range ; i++ ) {
for (var j = 0; j < holes[i].length; j++ ) {
tracer2._select ( i, j )._wait ();
A[k++] = holes[i][j];
tracer1._notify ( k-1, A[k-1] )._wait ();
tracer2._deselect ( i, j );
tracer1._denotify ( k-1 );
}
}
logTracer._print ( 'Sorted array is ' + A );