Skip to content

Commit 6ada3f3

Browse files
committed
har på en måte laget det mark ville ha med strek i MS
1 parent 78d6b4a commit 6ada3f3

File tree

9 files changed

+213
-13
lines changed

9 files changed

+213
-13
lines changed

MergeSort/js/Controller.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ var controller = /** @class */ (function () {
1717
controller.prototype.moveElementToPlace = function (element, px, back) {
1818
viewer.moveElementToPlace(element, px, back);
1919
};
20+
controller.prototype.moveElementsToPlace = function (element, px, back) {
21+
viewer.moveElementsToPlace(element, px, back);
22+
};
2023
controller.prototype.setColorInArrayElement = function (index, color, colorOn) {
2124
viewer.setColorInArrayElement(index, color, colorOn);
2225
};

MergeSort/js/Controller.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ class controller {
2121
viewer.moveElementToPlace(element, px, back);
2222
}
2323

24+
moveElementsToPlace(element: number[], px: number[], back: number[]) {
25+
viewer.moveElementsToPlace(element, px, back);
26+
}
27+
2428
setColorInArrayElement(index: number, color: number, colorOn: boolean) {
2529
viewer.setColorInArrayElement(index, color, colorOn);
2630
}

MergeSort/js/InitArray.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ function returnArray() {
6262
return array;
6363
}
6464

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

MergeSort/js/MergeSortAlgorithm.js

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
var n = 10;
99
var sortArray = [];
1010
var copyArray = [];
11+
var pivotElements = [];
12+
var pivCount = 0;
1113
var running = true;
1214
function checkIfAlreadyRunning() {
1315
manager.clear();
@@ -21,8 +23,9 @@ function startMergeSort() {
2123
}
2224
function mergesort(array) {
2325
if (array.length < 2) {
24-
//denne er ekkel
25-
control.deselectPivotElement(array[0]);
26+
if (pivotHelper(array[0])) {
27+
control.deselectPivotElement(array[0]);
28+
}
2629
return array;
2730
}
2831
else {
@@ -34,6 +37,8 @@ function mergesort(array) {
3437
right = array.slice(mid);
3538
//denne og er ekkel
3639
control.setPivotElement(right[0]);
40+
pivotElements[pivCount] = right[0];
41+
pivCount++;
3742
control.setColorInArrayElements(left, 1, true);
3843
control.setColorInArrayElements(right, 2, true);
3944
control.lowerElements(left);
@@ -46,6 +51,9 @@ function mergesort(array) {
4651
function merge(left, right) {
4752
var result = [];
4853
var testing = copyArray.slice(0);
54+
control.setPivotElement(right[0]);
55+
pivotElements[pivCount] = right[0];
56+
pivCount++;
4957
var tempLeftIndex = 0;
5058
var tempRightIndex = 0;
5159
var counter = copyArray.indexOf(left[0]);
@@ -62,6 +70,7 @@ function merge(left, right) {
6270
tempLeftIndex++;
6371
}
6472
else {
73+
pivotHelper(right[0]);
6574
control.setColorInArrayElement(right[tempRightIndex], 3, true);
6675
control.moveElementToPlace(right[tempRightIndex], counter, copyArray.indexOf(right[tempRightIndex]));
6776
result.push(right[tempRightIndex]);
@@ -71,27 +80,52 @@ function merge(left, right) {
7180
}
7281
}
7382
if (right.slice(tempRightIndex).length > 0) {
83+
pivotHelper(right[0]);
7484
var moreRight = right.slice(tempRightIndex);
7585
control.setColorInArrayElements(moreRight, 3, true);
86+
var elems = [];
87+
var count = [];
88+
var back = [];
7689
for (var i = 0; i < moreRight.length; i++) {
77-
control.moveElementToPlace(moreRight[i], counter, copyArray.indexOf(moreRight[i]));
90+
elems[i] = moreRight[i];
91+
count[i] = counter;
92+
back[i] = copyArray.indexOf(moreRight[i]);
7893
testing[counter] = moreRight[i];
7994
counter++;
8095
}
96+
control.moveElementsToPlace(elems, count, back);
8197
}
8298
if (left.slice(tempLeftIndex).length > 0) {
8399
var moreLeft = left.slice(tempLeftIndex);
84100
control.setColorInArrayElements(moreLeft, 3, true);
101+
var elems = [];
102+
var count = [];
103+
var back = [];
85104
for (var i = 0; i < moreLeft.length; i++) {
86-
control.moveElementToPlace(moreLeft[i], counter, copyArray.indexOf(moreLeft[i]));
105+
elems[i] = moreLeft[i];
106+
count[i] = counter;
107+
back[i] = copyArray.indexOf(moreLeft[i]);
87108
testing[counter] = moreLeft[i];
88109
counter++;
89110
}
111+
control.moveElementsToPlace(elems, count, back);
90112
}
113+
pivotHelper(right[0]);
91114
copyArray = testing.slice(0);
92115
control.setColorInArrayElements(testing, 3, false);
93116
return result.concat(left.slice(tempLeftIndex)).concat(right.slice(tempRightIndex));
94117
}
118+
function pivotHelper(number) {
119+
for (var i = 0; i < pivotElements.length; i++) {
120+
if (pivotElements[i] == number) {
121+
pivotElements = pivotElements.filter(function (item) {
122+
return item !== number;
123+
});
124+
pivCount--;
125+
control.deselectPivotElement(number);
126+
}
127+
}
128+
}
95129
function setRandomMyArray() {
96130
for (var i = 0; i < n; i++) {
97131
sortArray[i] = randomInt(0, 99);

MergeSort/js/MergeSortAlgorithm.ts

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ let n: number = 10;
1010

1111
let sortArray: number[] = [];
1212
let copyArray: number[] = [];
13+
let pivotElements: number[] = [];
14+
let pivCount: number = 0;
1315
let running = true;
1416

1517
function checkIfAlreadyRunning() {
@@ -27,8 +29,10 @@ function startMergeSort() {
2729

2830
function mergesort(array: number[]): any {
2931
if (array.length < 2) {
30-
//denne er ekkel
31-
control.deselectPivotElement(array[0]);
32+
pivotHelper(array[0]);
33+
34+
//control.deselectPivotElement(array[0]);
35+
3236
return array;
3337

3438
} else {
@@ -43,6 +47,8 @@ function mergesort(array: number[]): any {
4347

4448
//denne og er ekkel
4549
control.setPivotElement(right[0]);
50+
pivotElements[pivCount] = right[0];
51+
pivCount++;
4652

4753
control.setColorInArrayElements(left, 1, true);
4854
control.setColorInArrayElements(right, 2, true);
@@ -60,6 +66,9 @@ function mergesort(array: number[]): any {
6066
function merge(left: number[], right: number[]) {
6167
let result: number[] = [];
6268
let testing: number[] = copyArray.slice(0);
69+
control.setPivotElement(right[0]);
70+
pivotElements[pivCount] = right[0];
71+
pivCount++;
6372

6473
let tempLeftIndex: number = 0;
6574
let tempRightIndex: number = 0;
@@ -81,6 +90,7 @@ function merge(left: number[], right: number[]) {
8190
tempLeftIndex++;
8291

8392
} else {
93+
pivotHelper(right[0]);
8494
control.setColorInArrayElement(right[tempRightIndex], 3, true);
8595
control.moveElementToPlace(right[tempRightIndex], counter, copyArray.indexOf(right[tempRightIndex]));
8696

@@ -93,30 +103,60 @@ function merge(left: number[], right: number[]) {
93103
}
94104

95105
if (right.slice(tempRightIndex).length > 0) {
106+
pivotHelper(right[0]);
96107
let moreRight = right.slice(tempRightIndex);
97108
control.setColorInArrayElements(moreRight, 3, true);
109+
let elems: number[] = [];
110+
let count: number[] = [];
111+
let back: number[] = [];
112+
98113
for (let i = 0; i < moreRight.length; i++) {
99-
control.moveElementToPlace(moreRight[i], counter, copyArray.indexOf(moreRight[i]));
114+
elems[i] = moreRight[i];
115+
count[i] = counter;
116+
back[i] = copyArray.indexOf(moreRight[i]);
100117

101118
testing[counter] = moreRight[i];
102119
counter++;
103120
}
121+
control.moveElementsToPlace(elems, count, back);
104122
}
105123
if (left.slice(tempLeftIndex).length > 0) {
106124
let moreLeft = left.slice(tempLeftIndex);
107125
control.setColorInArrayElements(moreLeft, 3, true);
126+
let elems: number[] = [];
127+
let count: number[] = [];
128+
let back: number[] = [];
129+
108130
for (let i = 0; i < moreLeft.length; i++) {
109-
control.moveElementToPlace(moreLeft[i], counter, copyArray.indexOf(moreLeft[i]));
131+
elems[i] = moreLeft[i];
132+
count[i] = counter;
133+
back[i] = copyArray.indexOf(moreLeft[i]);
110134

111135
testing[counter] = moreLeft[i];
112136
counter++;
113137
}
138+
control.moveElementsToPlace(elems, count, back);
114139
}
140+
141+
pivotHelper(right[0]);
142+
115143
copyArray = testing.slice(0);
116144
control.setColorInArrayElements(testing, 3, false);
117145
return result.concat(left.slice(tempLeftIndex)).concat(right.slice(tempRightIndex));
118146
}
119147

148+
function pivotHelper(number: number) {
149+
for (let i = 0; i < pivotElements.length; i++) {
150+
if (pivotElements[i] == number) {
151+
pivotElements = pivotElements.filter(function (item) {
152+
return item !== number;
153+
})
154+
pivCount--;
155+
control.deselectPivotElement(number);
156+
}
157+
}
158+
}
159+
120160
function setRandomMyArray() {
121161
for (let i: number = 0; i < n; i++) {
122162
sortArray[i] = randomInt(0, 99);

MergeSort/js/Methods.js

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ function moveElementToPlace(element, px) {
6565
}
6666
}
6767
function moveElementBackToPlace(element, px) {
68-
console.log(px + " " + element);
6968
var $elem = $("#" + insElemNr + element);
7069
var moveLeft = $elem.css("left");
7170
var pos = (Number)(moveLeft.substring(0, moveLeft.length - 2));
@@ -85,3 +84,47 @@ function moveElementBackToPlace(element, px) {
8584
}
8685
}
8786
}
87+
function moveElementsToPlace(element, px) {
88+
for (var i = 0; i < element.length; i++) {
89+
var $elem = $("#" + insElemNr + element[i]);
90+
var moveLeft = $elem.css("left");
91+
var pos = (Number)(moveLeft.substring(0, moveLeft.length - 2));
92+
var pixel = px[i] * 85;
93+
if (pos > pixel) {
94+
if ($elem.offset().top > 170) {
95+
var newTop = parseInt($elem.css('top'), 10) - LEVEL_HEIGHT;
96+
$elem.animate({ top: newTop + "px" }, 500);
97+
}
98+
$elem.animate({ left: pixel + "px" }, 1000);
99+
}
100+
else {
101+
$elem.animate({ left: pixel + "px" }, 1000);
102+
if ($elem.offset().top > 170) {
103+
var newTop = parseInt($elem.css('top'), 10) - LEVEL_HEIGHT;
104+
$elem.animate({ top: newTop + "px" }, 500);
105+
}
106+
}
107+
}
108+
}
109+
function moveElementsBackToPlace(element, back) {
110+
for (var i = 0; i < element.length; i++) {
111+
var $elem = $("#" + insElemNr + element[i]);
112+
var moveLeft = $elem.css("left");
113+
var pos = (Number)(moveLeft.substring(0, moveLeft.length - 2));
114+
var pixel = back[i] * 85;
115+
if (pos > pixel) {
116+
if ($elem.offset().top > 170) {
117+
var newTop = parseInt($elem.css('top'), 10) + LEVEL_HEIGHT;
118+
$elem.animate({ top: newTop + "px" }, 500);
119+
}
120+
$elem.animate({ left: pixel + "px" }, 1000);
121+
}
122+
else {
123+
$elem.animate({ left: pixel + "px" }, 1000);
124+
if ($elem.offset().top > 170) {
125+
var newTop = parseInt($elem.css('top'), 10) + LEVEL_HEIGHT;
126+
$elem.animate({ top: newTop + "px" }, 500);
127+
}
128+
}
129+
}
130+
}

MergeSort/js/Methods.ts

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ function moveElementToPlace(element: number, px: number) {
7575
}
7676

7777
function moveElementBackToPlace(element: number, px: number) {
78-
console.log(px + " " + element);
7978
let $elem = $("#" + insElemNr + element);
8079
let moveLeft: string = $elem.css("left");
8180
let pos: number = (Number)(moveLeft.substring(0, moveLeft.length - 2));
@@ -96,5 +95,51 @@ function moveElementBackToPlace(element: number, px: number) {
9695
}
9796
}
9897

98+
function moveElementsToPlace(element: number[], px: number[]) {
99+
for (let i = 0; i < element.length; i++) {
100+
let $elem = $("#" + insElemNr + element[i]);
101+
let moveLeft: string = $elem.css("left");
102+
let pos: number = (Number)(moveLeft.substring(0, moveLeft.length - 2));
103+
let pixel: number = px[i] * 85;
104+
105+
if (pos > pixel) {
106+
if ($elem.offset().top > 170) {
107+
var newTop: number = parseInt($elem.css('top'), 10) - LEVEL_HEIGHT;
108+
$elem.animate({top: newTop + "px"}, 500);
109+
}
110+
$elem.animate({left: pixel + "px"}, 1000);
111+
} else {
112+
$elem.animate({left: pixel + "px"}, 1000);
113+
if ($elem.offset().top > 170) {
114+
var newTop: number = parseInt($elem.css('top'), 10) - LEVEL_HEIGHT;
115+
$elem.animate({top: newTop + "px"}, 500);
116+
}
117+
}
118+
}
119+
}
120+
121+
function moveElementsBackToPlace(element: number[], back: number[]) {
122+
for (let i = 0; i < element.length; i++) {
123+
let $elem = $("#" + insElemNr + element[i]);
124+
let moveLeft: string = $elem.css("left");
125+
let pos: number = (Number)(moveLeft.substring(0, moveLeft.length - 2));
126+
let pixel: number = back[i] * 85;
127+
128+
if (pos > pixel) {
129+
if ($elem.offset().top > 170) {
130+
var newTop: number = parseInt($elem.css('top'), 10) + LEVEL_HEIGHT;
131+
$elem.animate({top: newTop + "px"}, 500);
132+
}
133+
$elem.animate({left: pixel + "px"}, 1000);
134+
} else {
135+
$elem.animate({left: pixel + "px"}, 1000);
136+
if ($elem.offset().top > 170) {
137+
var newTop: number = parseInt($elem.css('top'), 10) + LEVEL_HEIGHT;
138+
$elem.animate({top: newTop + "px"}, 500);
139+
}
140+
}
141+
}
142+
}
143+
99144

100145

MergeSort/js/View.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,19 @@ var view = /** @class */ (function () {
8080
}(element, back);
8181
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
8282
};
83+
view.prototype.moveElementsToPlace = function (element, px, back) {
84+
var forwardSteps = function (element, px) {
85+
return function () {
86+
moveElementsToPlace(element, px);
87+
};
88+
}(element, px);
89+
var backwardSteps = function (element, back) {
90+
return function () {
91+
moveElementsBackToPlace(element, back);
92+
};
93+
}(element, back);
94+
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
95+
};
8396
view.prototype.setColorInArrayElement = function (index, color, colorOn) {
8497
var forwardSteps = function (index, color, colorOn) {
8598
return function () {
@@ -103,7 +116,7 @@ var view = /** @class */ (function () {
103116
return function () {
104117
setColors(index, color, !colorOn);
105118
};
106-
}(index, color, colorOn);
119+
}(index, color, !colorOn);
107120
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
108121
};
109122
view.prototype.pause = function () {

0 commit comments

Comments
 (0)