Skip to content

Commit 0c50d04

Browse files
committed
Fargene skal fungere korrekt med backwards nå trur eg + fjernet en død metode
1 parent c276557 commit 0c50d04

11 files changed

+186
-232
lines changed

MergeSort/js/Controller.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ var controller = /** @class */ (function () {
2020
controller.prototype.moveElementsToPlace = function (element, px, back) {
2121
viewer.moveElementsToPlace(element, px, back);
2222
};
23-
controller.prototype.setColorInArrayElement = function (index, color, colorOn) {
24-
viewer.setColorInArrayElement(index, color, colorOn);
23+
controller.prototype.setColorInArrayElement = function (index, color) {
24+
viewer.setColorInArrayElement(index, color);
2525
};
26-
controller.prototype.setColorInArrayElements = function (index, color, colorOn) {
27-
viewer.setColorInArrayElements(index, color, colorOn);
26+
controller.prototype.setColorInArrayElements = function (index, color) {
27+
viewer.setColorInArrayElements(index, color);
2828
};
2929
controller.prototype.setPause = function () {
3030
viewer.setPause();

MergeSort/js/Controller.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ class controller {
2525
viewer.moveElementsToPlace(element, px, back);
2626
}
2727

28-
setColorInArrayElement(index: number, color: number, colorOn: boolean) {
29-
viewer.setColorInArrayElement(index, color, colorOn);
28+
setColorInArrayElement(index: number, color: number) {
29+
viewer.setColorInArrayElement(index, color);
3030
}
3131

32-
setColorInArrayElements(index: number[], color: number, colorOn: boolean) {
33-
viewer.setColorInArrayElements(index, color, colorOn);
32+
setColorInArrayElements(index: number[], color: number) {
33+
viewer.setColorInArrayElements(index, color);
3434
}
3535

3636
setPause() {
3737
viewer.setPause();
3838
}
3939
}
4040

41-
var control: controller = new controller();
41+
let control: controller = new controller();

MergeSort/js/EventManager.js

-13
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ var eventManager = /** @class */ (function () {
2727
if (this.previousEvents.length == 0)
2828
return;
2929
var event = this.previousEvents.pop();
30-
//this.delayTime = 500; //this line set to 0 caused: when resuming all animations are played out. Intention Delay when stepping backwards.
3130
event.previous();
3231
this.nextEvents.unshift(event);
3332
};
@@ -86,15 +85,3 @@ var FrontendEvent = /** @class */ (function () {
8685
return FrontendEvent;
8786
}());
8887
var manager = new eventManager();
89-
/*
90-
/** How to add FrontendEvents to manager
91-
for(var i=0; i<10; i++) {
92-
var f = function(k) {
93-
return function() {console.log("Going forward, step " + k);};
94-
}(i);
95-
var b = function(k) {
96-
return function() {console.log("Going backward, step " + k);}
97-
}(i);
98-
manager.addEvent(new FrontendEvent(f,b));
99-
}
100-
*/

MergeSort/js/EventManager.ts

+3-17
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class eventManager {
3131
if (this.previousEvents.length == 0)
3232
return;
3333
let event: FrontendEvent = (<FrontendEvent> this.previousEvents.pop());
34-
//this.delayTime = 500; //this line set to 0 caused: when resuming all animations are played out. Intention Delay when stepping backwards.
3534
event.previous();
3635
this.nextEvents.unshift(event);
3736
}
@@ -78,13 +77,13 @@ class eventManager {
7877
this.helpSetInterval();
7978
}
8079

81-
fast(){
80+
fast() {
8281
this.delayTime = 500;
8382
this.helpSetInterval();
8483
}
8584

8685
helpSetInterval() {
87-
if(!this.paused) {
86+
if (!this.paused) {
8887
this.pause();
8988
this.start();
9089
}
@@ -103,17 +102,4 @@ class FrontendEvent {
103102
}
104103
}
105104

106-
let manager: eventManager = new eventManager();
107-
108-
/*
109-
/** How to add FrontendEvents to manager
110-
for(var i=0; i<10; i++) {
111-
var f = function(k) {
112-
return function() {console.log("Going forward, step " + k);};
113-
}(i);
114-
var b = function(k) {
115-
return function() {console.log("Going backward, step " + k);}
116-
}(i);
117-
manager.addEvent(new FrontendEvent(f,b));
118-
}
119-
*/
105+
let manager: eventManager = new eventManager();

MergeSort/js/InitArray.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ArrayElement {
1717
}
1818
}
1919

20-
var arrayElements = new Array;
20+
let arrayElements = new Array;
2121

2222
function setMyArray(jsonArray: string) {
2323
array = JSON.parse(jsonArray);
@@ -28,18 +28,18 @@ function setMyArray(jsonArray: string) {
2828
$(this).remove();
2929
});
3030

31-
for (var i = 0; i < array.length; i++) {
31+
for (let i = 0; i < array.length; i++) {
3232
$("#indices").append("<p id='ind" + i + "' >" + i + "</p>");
3333
$("#arrayUl").append("<li id='insElemNr" + array[i] + "'><div>" + array[i] + "</div></li>");
3434
arrayElements.push(new ArrayElement(array[i]));
3535
}
3636

3737
// Spreading elements horizontally
3838
$(document).ready(function () {
39-
for (var i = 0; i < array.length; i++) {
40-
var left = (i * 85);
41-
var indLeft = (left + 7) - (i > 9 ? 7 : 0);
42-
$("#ind" + i).animate({left: indLeft + "px"}, 1000)
39+
for (let i = 0; i < array.length; i++) {
40+
let left = (i * 85);
41+
let indLeft = (left + 7) - (i > 9 ? 7 : 0);
42+
$("#ind" + i).animate({left: indLeft + "px"}, 1000);
4343
arrayElements[i].animateLeft(left, 1000, "insElemNr");
4444
}
4545
});
@@ -50,8 +50,8 @@ function setMyArray(jsonArray: string) {
5050
}
5151

5252
function centerElements() {
53-
var arrayWidth = ((array.length - 1) * 85) + 50;
54-
var left = -arrayWidth / 2 + 20;
53+
let arrayWidth = ((array.length - 1) * 85) + 50;
54+
let left = -arrayWidth / 2 + 20;
5555
$("#indices").animate({left: (left) + "px"}, 500);
5656
$("#arrayUl").animate({left: left + "px"}, 500); // +20? Ul is default 40px -> 40/2 = 20. Don't touch.
5757
$("svg#k-svg").animate({left: (left - 7) + "px"}, 500);
@@ -62,7 +62,7 @@ function returnArray() {
6262
return array;
6363
}
6464

65-
function getArray(ran:string):any {
65+
function getArray(ran: string): any {
6666
// Setting Random array
6767
if (ran === "random") {
6868
array = setRandomMyArray();

MergeSort/js/MergeSortAlgorithm.js

+30-26
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ function startMergeSort() {
1919
checkIfAlreadyRunning();
2020
copyArray = returnArray();
2121
mergesort(copyArray);
22-
control.setColorInArrayElements(copyArray, 3, true);
2322
}
2423
function mergesort(array) {
2524
if (array.length < 2) {
2625
pivotHelper(array[0]);
27-
//control.deselectPivotElement(array[0]);
2826
return array;
2927
}
3028
else {
@@ -38,30 +36,37 @@ function mergesort(array) {
3836
control.setPivotElement(right[0]);
3937
pivotElements[pivCount] = right[0];
4038
pivCount++;
41-
control.setColorInArrayElements(left, 1, true);
42-
control.setColorInArrayElements(right, 2, true);
39+
control.setColorInArrayElements(left, 1);
40+
control.setColorInArrayElements(right, 2);
4341
control.lowerElements(left);
4442
control.lowerElements(right);
45-
control.setColorInArrayElements(array, 1, false);
43+
control.setColorInArrayElements(left, 4);
44+
control.setColorInArrayElements(right, 4);
4645
//Split until there is only 1 element left
4746
return merge(mergesort(left), mergesort(right));
4847
}
4948
}
5049
function merge(left, right) {
5150
var result = [];
5251
var testing = copyArray.slice(0);
52+
var workingNumbers = left.concat(right);
5353
control.setPivotElement(right[0]);
5454
pivotElements[pivCount] = right[0];
5555
pivCount++;
5656
var tempLeftIndex = 0;
5757
var tempRightIndex = 0;
5858
var counter = copyArray.indexOf(left[0]);
59+
var leftAlreadyColored = false;
5960
while (tempLeftIndex < left.length && tempRightIndex < right.length) {
6061
//Compare the elements from each array
61-
control.setColorInArrayElement(left[tempLeftIndex], 0, true);
62-
control.setColorInArrayElement(right[tempRightIndex], 0, true);
62+
if (!leftAlreadyColored) {
63+
control.setColorInArrayElement(left[tempLeftIndex], 0);
64+
leftAlreadyColored = true;
65+
}
66+
control.setColorInArrayElement(right[tempRightIndex], 0);
6367
if (left[tempLeftIndex] < right[tempRightIndex]) {
64-
control.setColorInArrayElement(left[tempLeftIndex], 3, true);
68+
leftAlreadyColored = false;
69+
control.setColorInArrayElement(left[tempLeftIndex], 3);
6570
control.moveElementToPlace(left[tempLeftIndex], counter, copyArray.indexOf(left[tempLeftIndex]));
6671
result.push(left[tempLeftIndex]);
6772
testing[counter] = left[tempLeftIndex];
@@ -70,48 +75,47 @@ function merge(left, right) {
7075
}
7176
else {
7277
pivotHelper(right[0]);
73-
control.setColorInArrayElement(right[tempRightIndex], 3, true);
78+
control.setColorInArrayElement(right[tempRightIndex], 3);
7479
control.moveElementToPlace(right[tempRightIndex], counter, copyArray.indexOf(right[tempRightIndex]));
7580
result.push(right[tempRightIndex]);
7681
testing[counter] = right[tempRightIndex];
7782
counter++;
7883
tempRightIndex++;
7984
}
8085
}
81-
if (right.slice(tempRightIndex).length > 0) {
82-
pivotHelper(right[0]);
83-
var moreRight = right.slice(tempRightIndex);
84-
control.setColorInArrayElements(moreRight, 3, true);
86+
if (left.slice(tempLeftIndex).length > 0) {
87+
var moreLeft = left.slice(tempLeftIndex);
88+
control.setColorInArrayElements(moreLeft, 3);
8589
var elems = [];
8690
var count = [];
8791
var back = [];
88-
for (var i = 0; i < moreRight.length; i++) {
89-
elems[i] = moreRight[i];
92+
for (var i = 0; i < moreLeft.length; i++) {
93+
elems[i] = moreLeft[i];
9094
count[i] = counter;
91-
back[i] = copyArray.indexOf(moreRight[i]);
92-
testing[counter] = moreRight[i];
95+
back[i] = copyArray.indexOf(moreLeft[i]);
96+
testing[counter] = moreLeft[i];
9397
counter++;
9498
}
9599
control.moveElementsToPlace(elems, count, back);
96100
}
97-
if (left.slice(tempLeftIndex).length > 0) {
98-
var moreLeft = left.slice(tempLeftIndex);
99-
control.setColorInArrayElements(moreLeft, 3, true);
101+
if (right.slice(tempRightIndex).length > 0) {
102+
pivotHelper(right[0]);
103+
var moreRight = right.slice(tempRightIndex);
104+
control.setColorInArrayElements(moreRight, 3);
100105
var elems = [];
101106
var count = [];
102107
var back = [];
103-
for (var i = 0; i < moreLeft.length; i++) {
104-
elems[i] = moreLeft[i];
108+
for (var i = 0; i < moreRight.length; i++) {
109+
elems[i] = moreRight[i];
105110
count[i] = counter;
106-
back[i] = copyArray.indexOf(moreLeft[i]);
107-
testing[counter] = moreLeft[i];
111+
back[i] = copyArray.indexOf(moreRight[i]);
112+
testing[counter] = moreRight[i];
108113
counter++;
109114
}
110115
control.moveElementsToPlace(elems, count, back);
111116
}
112-
pivotHelper(right[0]);
113117
copyArray = testing.slice(0);
114-
control.setColorInArrayElements(testing, 3, false);
118+
control.setColorInArrayElements(workingNumbers, 4);
115119
return result.concat(left.slice(tempLeftIndex)).concat(right.slice(tempRightIndex));
116120
}
117121
function pivotHelper(number) {

0 commit comments

Comments
 (0)