Skip to content

Commit 8c95693

Browse files
Merge branch 'master' of https://github.com/kennidenni/INF219
2 parents 39c48f1 + e843c72 commit 8c95693

File tree

8 files changed

+201
-109
lines changed

8 files changed

+201
-109
lines changed

.idea/workspace.xml

+98-98
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

MergeSort/js/Controller.js

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ var controller = /** @class */ (function () {
2929
controller.prototype.setPause = function () {
3030
viewer.setPause();
3131
};
32+
controller.prototype.setColorInMultipleArrays = function (left, color1, right, color2) {
33+
viewer.setColorInMultipleArrays(left, color1, right, color2);
34+
};
3235
return controller;
3336
}());
3437
var control = new controller();

MergeSort/js/Controller.ts

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ class controller {
3636
setPause() {
3737
viewer.setPause();
3838
}
39+
40+
setColorInMultipleArrays(left: number[], color1: number, right: number[], color2: number) {
41+
viewer.setColorInMultipleArrays(left, color1, right, color2);
42+
}
3943
}
4044

4145
let control: controller = new controller();

MergeSort/js/MergeSortAlgorithm.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,10 @@ function mergesort(array) {
3535
control.setPivotElement(right[0]);
3636
pivotElements[pivCount] = right[0];
3737
pivCount++;
38-
control.setColorInArrayElements(left, 1);
39-
control.setColorInArrayElements(right, 2);
38+
control.setColorInMultipleArrays(left, 1, right, 2);
4039
control.lowerElements(left);
4140
control.lowerElements(right);
42-
control.setColorInArrayElements(left, 4);
43-
control.setColorInArrayElements(right, 4);
41+
control.setColorInMultipleArrays(left, 4, right, 4);
4442
//Split until there is only 1 element left
4543
return merge(mergesort(left), mergesort(right));
4644
}
@@ -142,7 +140,12 @@ function setInvSortedArray() {
142140
return setSortedArray().reverse();
143141
}
144142
function isSorted(arr) {
145-
return arr.forEach(function (n1, n2) { return n1 <= n2; });
143+
for (var i = 0; i < arr.length - 1; i++) {
144+
if (arr[i] > arr[i + 1]) {
145+
return false;
146+
}
147+
}
148+
return true;
146149
}
147150
function setAlmostSortedArray() {
148151
var arr = setSortedArray();

MergeSort/js/MergeSortAlgorithm.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,12 @@ function mergesort(array: number[]): any {
4444
pivotElements[pivCount] = right[0];
4545
pivCount++;
4646

47-
control.setColorInArrayElements(left, 1);
48-
control.setColorInArrayElements(right, 2);
47+
control.setColorInMultipleArrays(left, 1, right, 2);
4948

5049
control.lowerElements(left);
5150
control.lowerElements(right);
5251

53-
control.setColorInArrayElements(left, 4);
54-
control.setColorInArrayElements(right, 4);
52+
control.setColorInMultipleArrays(left, 4, right, 4);
5553

5654
//Split until there is only 1 element left
5755
return merge(mergesort(left), mergesort(right));

MergeSort/js/View.js

+42-1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,43 @@ var view = /** @class */ (function () {
120120
}
121121
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
122122
};
123+
view.prototype.setColorInMultipleArrays = function (left, color1, right, color2) {
124+
var colorList1 = [];
125+
for (var i = 0; i < left.length; i++) {
126+
colorList1[i] = color1;
127+
}
128+
var colorList2 = [];
129+
for (var i = 0; i < right.length; i++) {
130+
colorList2[i] = color2;
131+
}
132+
var forwardSteps = function (left, colorList1, right, colorList2) {
133+
return function () {
134+
setColors(left, colorList1);
135+
setColors(right, colorList2);
136+
};
137+
}(left, colorList1, right, colorList2);
138+
var oldColor1 = [];
139+
for (var i = 0; i < left.length; i++) {
140+
oldColor1[i] = colorInArray[myArray.indexOf(left[i])];
141+
}
142+
var oldColor2 = [];
143+
for (var i = 0; i < right.length; i++) {
144+
oldColor2[i] = colorInArray[myArray.indexOf(right[i])];
145+
}
146+
var backwardSteps = function (left, oldColor1, right, oldColor2) {
147+
return function () {
148+
setColors(left, oldColor1);
149+
setColors(right, oldColor2);
150+
};
151+
}(left, oldColor1, right, oldColor2);
152+
for (var i = 0; i < left.length; i++) {
153+
colorInArray[myArray.indexOf(left[i])] = color1;
154+
}
155+
for (var i = 0; i < right.length; i++) {
156+
colorInArray[myArray.indexOf(right[i])] = color2;
157+
}
158+
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
159+
};
123160
view.prototype.pause = function () {
124161
if (!this.paused) {
125162
this.paused = true;
@@ -144,14 +181,18 @@ var view = /** @class */ (function () {
144181
$('#forward').removeAttr('disabled');
145182
};
146183
view.prototype.forward = function () {
184+
$('#forward').attr('disabled', 'disabled');
147185
manager.next();
186+
setTimeout(function () {
187+
$('#forward').removeAttr('disabled');
188+
}, 350);
148189
};
149190
view.prototype.backward = function () {
150191
$('#backward').attr('disabled', 'disabled');
151192
manager.previous();
152193
setTimeout(function () {
153194
$('#backward').removeAttr('disabled');
154-
}, 300);
195+
}, 350);
155196
};
156197
view.prototype.slow = function () {
157198
manager.slow();

MergeSort/js/View.ts

+44
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,50 @@ class view {
152152
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
153153
}
154154

155+
setColorInMultipleArrays(left: number[], color1: number, right: number[], color2: number) {
156+
let colorList1: number[] = [];
157+
for (let i = 0; i < left.length; i++) {
158+
colorList1[i] = color1;
159+
}
160+
161+
let colorList2: number[] = [];
162+
for (let i = 0; i < right.length; i++) {
163+
colorList2[i] = color2;
164+
}
165+
166+
let forwardSteps = function (left, colorList1, right, colorList2) {
167+
return function () {
168+
setColors(left, colorList1);
169+
setColors(right, colorList2);
170+
}
171+
}(left, colorList1, right, colorList2);
172+
173+
let oldColor1: number[] = [];
174+
for (let i = 0; i < left.length; i++) {
175+
oldColor1[i] = colorInArray[myArray.indexOf(left[i])];
176+
}
177+
178+
let oldColor2: number[] = [];
179+
for (let i = 0; i < right.length; i++) {
180+
oldColor2[i] = colorInArray[myArray.indexOf(right[i])];
181+
}
182+
183+
let backwardSteps = function (left, oldColor1, right, oldColor2) {
184+
return function () {
185+
setColors(left, oldColor1);
186+
setColors(right, oldColor2);
187+
}
188+
}(left, oldColor1, right, oldColor2);
189+
190+
for (let i = 0; i < left.length; i++) {
191+
colorInArray[myArray.indexOf(left[i])] = color1;
192+
}
193+
for (let i = 0; i < right.length; i++) {
194+
colorInArray[myArray.indexOf(right[i])] = color2;
195+
}
196+
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
197+
}
198+
155199
pause() {
156200
if (!this.paused) {
157201
this.paused = true;

SimpleSort/js/View.ts

-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ class view {
244244
fast() {
245245
manager.fast();
246246
}
247-
248247
}
249248

250249
var viewer: view = new view();

0 commit comments

Comments
 (0)