|
1 | | -tracer._print('original array = [' + D[0].join(', ') + ']'); |
2 | | -tracer._sleep(1000); |
3 | | -tracer._pace(300); |
4 | | -function pow(base, expo){ |
5 | | - var ans = 1; |
6 | | - for(var i = 0; i < expo;i++){ |
7 | | - ans *= base; |
8 | | - } |
9 | | - return ans; |
| 1 | +logger._print('original array = [' + D[0].join(', ') + ']'); |
| 2 | +function pow(base, expo) { |
| 3 | + var ans = 1; |
| 4 | + for (var i = 0; i < expo; i++) { |
| 5 | + ans *= base; |
| 6 | + } |
| 7 | + return ans; |
10 | 8 | } |
11 | | -for(var exp = 0; exp < 3;exp ++){ |
12 | | - tracer._print("Digit: "+exp); |
13 | | - for(var i = 0; i < D[0].length; i++){ |
14 | | - tracer._select(0, i); |
15 | | - D[2][ parseInt( D[0][i] / pow(10, exp) % 10) ] += 1; |
16 | | - tracer._notify(2, parseInt( D[0][i] / pow(10, exp) % 10) ); |
17 | | - tracer._deselect(0, i); |
18 | | - } |
19 | | - for(var i = 1; i < 10; i++){ |
20 | | - tracer._select(2, i - 1); |
21 | | - D[2][i] += D[2][i - 1]; |
22 | | - tracer._notify(2, i); |
23 | | - tracer._deselect(2, i - 1); |
24 | | - } |
25 | | - for(var i = D[0].length - 1; i >= 0; i--){ |
26 | | - tracer._select(0, i); |
27 | | - D[2][parseInt( D[0][i] / pow(10, exp) % 10) ] -= 1; |
28 | | - tracer._notify(2, parseInt( D[0][i] / pow(10, exp) % 10) ); |
29 | | - D[1][ D[2][ parseInt( D[0][i] / pow(10, exp) % 10) ] ] = D[0][i]; |
30 | | - tracer._notify(1, D[2][ parseInt( D[0][i] / pow(10, exp) % 10) ] ); |
31 | | - tracer._deselect(0, i); |
32 | | - } |
33 | | - for(var i = 0; i < D[0].length; i++){ |
34 | | - tracer._select(1, i); |
35 | | - D[0][i] = D[1][i]; |
36 | | - tracer._notify(0, i); |
37 | | - tracer._deselect(1, i); |
38 | | - } |
39 | | - for(var i = 0; i < 10; i++){ |
40 | | - D[2][i] = 0; |
41 | | - tracer._notify(2, i); |
42 | | - } |
| 9 | +function digit(i, exp) { |
| 10 | + return parseInt(D[0][i] / pow(10, exp) % 10); |
43 | 11 | } |
44 | | -tracer._print('sorted array = [' + D[0].join(', ') + ']'); |
| 12 | +for (var exp = 0; exp < 3; exp++) { |
| 13 | + logger._print("Digit: " + exp); |
| 14 | + var i; |
| 15 | + for (i = 0; i < D[0].length; i++) { |
| 16 | + var d = digit(i, exp); |
| 17 | + tracer._select(0, i)._wait(); |
| 18 | + D[2][d] += 1; |
| 19 | + tracer._notify(2, d, D[2][d])._wait(); |
| 20 | + tracer._denotify(2, d); |
| 21 | + tracer._deselect(0, i); |
| 22 | + } |
| 23 | + for (i = 1; i < 10; i++) { |
| 24 | + tracer._select(2, i - 1)._wait(); |
| 25 | + D[2][i] += D[2][i - 1]; |
| 26 | + tracer._notify(2, i, D[2][i])._wait(); |
| 27 | + tracer._denotify(2, i); |
| 28 | + tracer._deselect(2, i - 1); |
| 29 | + } |
| 30 | + for (i = D[0].length - 1; i >= 0; i--) { |
| 31 | + var d = digit(i, exp); |
| 32 | + tracer._select(0, i)._wait(); |
| 33 | + D[2][d] -= 1; |
| 34 | + tracer._notify(2, d, D[2][d])._wait(); |
| 35 | + tracer._denotify(2, d); |
| 36 | + D[1][D[2][d]] = D[0][i]; |
| 37 | + tracer._notify(1, D[2][d], D[1][D[2][d]])._wait(); |
| 38 | + tracer._denotify(1, D[2][d]); |
| 39 | + tracer._deselect(0, i); |
| 40 | + } |
| 41 | + for (i = 0; i < D[0].length; i++) { |
| 42 | + tracer._select(1, i)._wait(); |
| 43 | + D[0][i] = D[1][i]; |
| 44 | + tracer._notify(0, i, D[0][i])._wait(); |
| 45 | + tracer._denotify(0, i); |
| 46 | + tracer._deselect(1, i); |
| 47 | + } |
| 48 | + for (i = 0; i < 10; i++) { |
| 49 | + D[2][i] = 0; |
| 50 | + tracer._notify(2, i, D[2][i])._wait(); |
| 51 | + tracer._denotify(2, i); |
| 52 | + } |
| 53 | +} |
| 54 | +logger._print('sorted array = [' + D[0].join(', ') + ']'); |
0 commit comments