Skip to content

Commit ded96c3

Browse files
committed
fix algorithms
1 parent 0f883f7 commit ded96c3

File tree

4 files changed

+83
-71
lines changed

4 files changed

+83
-71
lines changed
Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
var maxSubarraySum = (function maxSubarray (array) {
2-
var maxSoFar = 0,
3-
maxEndingHere = 0;
1+
var maxSubarraySum = (function maxSubarray(array) {
2+
var maxSoFar = 0,
3+
maxEndingHere = 0;
44

5-
tracer._print ('Initializing maxSoFar = 0 & maxEndingHere = 0');
5+
logger._print('Initializing maxSoFar = 0 & maxEndingHere = 0');
66

7-
for (var i = 0; i < array.length; i++) {
8-
tracer._select (i);
9-
tracer._print (maxEndingHere + ' + ' + array [i]);
10-
maxEndingHere += array [i];
11-
tracer._print ('=> ' + maxEndingHere);
7+
for (var i = 0; i < array.length; i++) {
8+
tracer._select(i);
9+
logger._print(maxEndingHere + ' + ' + array[i]);
10+
maxEndingHere += array[i];
11+
logger._print('=> ' + maxEndingHere);
1212

13-
if (maxEndingHere < 0) {
14-
tracer._print ('maxEndingHere is negative, set to 0');
15-
maxEndingHere = 0;
16-
}
13+
if (maxEndingHere < 0) {
14+
logger._print('maxEndingHere is negative, set to 0');
15+
maxEndingHere = 0;
16+
}
1717

18-
if (maxSoFar < maxEndingHere) {
19-
tracer._print ('maxSoFar < maxEndingHere, setting maxSoFar to maxEndingHere (' + maxEndingHere + ')');
20-
maxSoFar = maxEndingHere;
21-
}
22-
23-
tracer._deselect (i);
24-
}
18+
if (maxSoFar < maxEndingHere) {
19+
logger._print('maxSoFar < maxEndingHere, setting maxSoFar to maxEndingHere (' + maxEndingHere + ')');
20+
maxSoFar = maxEndingHere;
21+
}
2522

26-
return maxSoFar;
27-
}) (D);
23+
tracer._wait();
24+
tracer._deselect(i);
25+
}
2826

29-
tracer._print ('Maximum Subarray\'s Sum is: ' + maxSubarraySum);
27+
return maxSoFar;
28+
})(D);
29+
30+
logger._print('Maximum Subarray\'s Sum is: ' + maxSubarraySum);
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var tracer = new Array1DTracer ();
1+
var tracer = new Array1DTracer();
2+
var logger = new LogTracer();
23
var D = [-2, -3, 4, -1, -2, 1, 5, -3];
3-
4-
tracer._setData (D);
4+
tracer._setData(D);
Lines changed: 52 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,54 @@
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;
108
}
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);
4311
}
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(', ') + ']');
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
var tracer = new Array2DTracer();
2+
var logger = new LogTracer();
23
var k = Array1D.random(10, 1, 999);
34
var D = [
4-
k,
5-
[0,0,0,0,0,0,0,0,0,0],
6-
[0,0,0,0,0,0,0,0,0,0]
5+
k,
6+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
7+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
78
];
89
tracer._setData(D);

0 commit comments

Comments
 (0)