Skip to content

Commit 5d5090f

Browse files
author
Kenneth Apeland
committed
bugfix simplesort
1 parent d1c24f9 commit 5d5090f

File tree

6 files changed

+65
-37
lines changed

6 files changed

+65
-37
lines changed

SimpleSort/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ <h1 id="header">Insertion Sort</h1>
5959
</div>
6060

6161
</div>
62+
<script>getArray('random')</script>
6263
<script>startInsertionSort()</script>
6364
</body>
6465
</html>

SimpleSort/js/InsertionSort.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
///<reference path="fillWithListElements.ts"/>
77
//private IntArrayGenerator gen = new IntArrayGenerator();
88
var array = [];
9+
var savedArray;
910
var n = 10;
11+
var algoIns = true;
1012
/**
1113
* Check if an algorithm is already running - if that is the case reset the view
1214
*/
1315
function checkIfAlreadyRunning() {
16+
array = savedArray.slice();
1417
k.hide();
15-
var arr = setRandomArray();
16-
setArray(viewer.serializeArray(arr));
18+
$("#arrayUl li").css('background-color', '#FFFFFF');
1719
manager.clear();
1820
viewer.setPause();
1921
}
@@ -24,6 +26,7 @@ function startInsertionSort() {
2426
checkIfAlreadyRunning();
2527
control.hideK();
2628
control.setHeadText("Insertion Sort");
29+
setArray(viewer.serializeArray(array));
2730
var j; // Elements sorted, starting on second position
2831
var key; // Current element
2932
var i; // Index moving backwards with key
@@ -49,6 +52,7 @@ function startInsertionSort() {
4952
function startShellSort() {
5053
checkIfAlreadyRunning();
5154
control.setHeadText("Shell Sort");
55+
setArray(viewer.serializeArray(array));
5256
// Setup K
5357
var k = (Math.floor(array.length / 2)); // Gap
5458
control.setKValue(k);

SimpleSort/js/InsertionSort.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@
88

99
//private IntArrayGenerator gen = new IntArrayGenerator();
1010
let array: number[] = [];
11+
let savedArray: number[];
1112
const n = 10;
13+
let algoIns = true;
1214

1315
/**
1416
* Check if an algorithm is already running - if that is the case reset the view
1517
*/
1618
function checkIfAlreadyRunning() {
19+
array = savedArray.slice();
1720
k.hide();
18-
let arr = setRandomArray();
19-
setArray(viewer.serializeArray(arr));
21+
$("#arrayUl li").css('background-color', '#FFFFFF');
2022
manager.clear();
2123
viewer.setPause();
2224
}
@@ -28,6 +30,7 @@ function startInsertionSort() {
2830
checkIfAlreadyRunning();
2931
control.hideK();
3032
control.setHeadText("Insertion Sort");
33+
setArray(viewer.serializeArray(array));
3134
let j: number; // Elements sorted, starting on second position
3235
let key: number; // Current element
3336
let i: number; // Index moving backwards with key
@@ -54,7 +57,7 @@ function startInsertionSort() {
5457
function startShellSort() {
5558
checkIfAlreadyRunning();
5659
control.setHeadText("Shell Sort");
57-
60+
setArray(viewer.serializeArray(array));
5861
// Setup K
5962
let k: number = (Math.floor(array.length / 2)); // Gap
6063
control.setKValue(k);

SimpleSort/js/View.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ var view = /** @class */ (function () {
191191
view.prototype.forward = function () {
192192
manager.next();
193193
};
194-
view.backward = function () {
194+
view.prototype.backward = function () {
195195
manager.previous();
196196
};
197197
view.prototype.slow = function () {

SimpleSort/js/fillWithListElements.js

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ function setArray(serializedArray) {
99
});
1010
$("#arrayUl").remove();
1111
// Insert new elements
12-
array = serializedArray.split('|'); // Deserialize array
12+
savedArray = serializedArray.split('|'); // Deserialize array
1313
$("#array").append("<ul id='arrayUl' class='insElements'></ul>"); // TODO: this adds arrayUl without deleting it
14-
for (var i = 0; i < array.length; i++) {
14+
for (var i = 0; i < savedArray.length; i++) {
1515
$("#indices").append("<p id='ind" + i + "' >" + i + "</p>");
16-
$("#arrayUl").append("<li id='insElemNr" + i + "'><div>" + array[i] + "</div></li>");
16+
$("#arrayUl").append("<li id='insElemNr" + i + "'><div>" + savedArray[i] + "</div></li>");
1717
}
1818
// Spreading elements horizontally
1919
$("document").ready(function () {
20-
for (var i = 0; i < array.length; i++) {
20+
for (var i = 0; i < savedArray.length; i++) {
2121
var left = (i * 70) + "px";
2222
$("#ind" + i).animate({ left: left }, 1000);
2323
$("#insElemNr" + i).animate({ left: left }, 1000);
@@ -28,22 +28,32 @@ function setArray(serializedArray) {
2828
$(window).resize(centerElements());
2929
}
3030
function centerElements() {
31-
var arrayWidth = ((array.length - 1) * 70) + 50;
31+
var arrayWidth = ((savedArray.length - 1) * 70) + 50;
3232
var left = -arrayWidth / 2 + 20;
3333
$("#indices").animate({ left: left + "px" }, 500);
3434
$("#arrayUl").animate({ left: left + "px" }, 500); // +20? Ul is default 40px -> 40/2 = 20. Dont touch.
3535
$("svg#k-svg").animate({ left: (left - 7) + "px" }, 500);
3636
}
3737
function getArray(ran) {
38-
// Setting Random array
39-
if (ran === "random")
40-
setArray(viewer.serializeArray(setRandomArray()));
41-
else if (ran === "sorted")
42-
setArray(viewer.serializeArray(setSortedArray()));
43-
else if (ran === "inverted")
44-
setArray(viewer.serializeArray(setInvSortedArray()));
45-
else if (ran === "almostSorted")
46-
setArray(viewer.serializeArray(setAlmostSortedArray()));
38+
if (ran === "random") {
39+
savedArray = setRandomArray();
40+
}
41+
else if (ran === "sorted") {
42+
savedArray = setSortedArray();
43+
}
44+
else if (ran === "inverted") {
45+
savedArray = setInvSortedArray();
46+
}
47+
else if (ran === "almostSorted") {
48+
savedArray = setAlmostSortedArray();
49+
}
50+
else {
51+
savedArray = [14, 11, 19, 18, 7, 17, 15, 5];
52+
}
53+
setArray(viewer.serializeArray(savedArray));
54+
if (algoIns) {
55+
startInsertionSort();
56+
}
4757
else
48-
setArray('14|17|19|18|7|17|15|5');
58+
startShellSort();
4959
}

SimpleSort/js/fillWithListElements.ts

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ function setArray(serializedArray: any) {
1010
});
1111
$("#arrayUl").remove();
1212
// Insert new elements
13-
array = serializedArray.split('|'); // Deserialize array
13+
savedArray = serializedArray.split('|'); // Deserialize array
1414
$("#array").append("<ul id='arrayUl' class='insElements'></ul>"); // TODO: this adds arrayUl without deleting it
15-
for (var i = 0; i < array.length; i++) {
15+
for (var i = 0; i < savedArray.length; i++) {
1616
$("#indices").append("<p id='ind" + i + "' >" + i + "</p>");
17-
$("#arrayUl").append("<li id='insElemNr" + i + "'><div>" + array[i] + "</div></li>");
17+
$("#arrayUl").append("<li id='insElemNr" + i + "'><div>" + savedArray[i] + "</div></li>");
1818
}
1919

2020
// Spreading elements horizontally
2121
$("document").ready(function () {
22-
for (var i = 0; i < array.length; i++) {
22+
for (var i = 0; i < savedArray.length; i++) {
2323
var left = (i * 70) + "px";
2424
$("#ind" + i).animate({left: left}, 1000)
2525
$("#insElemNr" + i).animate({left: left}, 1000);
@@ -32,23 +32,33 @@ function setArray(serializedArray: any) {
3232
}
3333

3434
function centerElements() {
35-
var arrayWidth = ((array.length - 1) * 70) + 50;
35+
var arrayWidth = ((savedArray.length - 1) * 70) + 50;
3636
var left = -arrayWidth / 2 + 20;
3737
$("#indices").animate({left: left + "px"}, 500);
3838
$("#arrayUl").animate({left: left + "px"}, 500); // +20? Ul is default 40px -> 40/2 = 20. Dont touch.
3939
$("svg#k-svg").animate({left: (left - 7) + "px"}, 500);
4040
}
4141

4242
function getArray(ran: string) {
43-
// Setting Random array
44-
if (ran === "random")
45-
setArray(viewer.serializeArray(setRandomArray()));
46-
else if (ran === "sorted")
47-
setArray(viewer.serializeArray(setSortedArray()));
48-
else if (ran === "inverted")
49-
setArray(viewer.serializeArray(setInvSortedArray()));
50-
else if (ran === "almostSorted")
51-
setArray(viewer.serializeArray(setAlmostSortedArray()));
52-
else // If page is tested in another browser
53-
setArray('14|17|19|18|7|17|15|5');
43+
if (ran === "random") {
44+
savedArray = setRandomArray();
45+
}
46+
else if (ran === "sorted") {
47+
savedArray = setSortedArray();
48+
}
49+
else if (ran === "inverted") {
50+
savedArray = setInvSortedArray();
51+
}
52+
else if (ran === "almostSorted") {
53+
savedArray = setAlmostSortedArray();
54+
}
55+
else { // If all else fails
56+
savedArray = [14, 11, 19, 18, 7, 17, 15, 5];
57+
}
58+
setArray(viewer.serializeArray(savedArray));
59+
if (algoIns) {
60+
startInsertionSort();
61+
} else
62+
startShellSort();
5463
}
64+

0 commit comments

Comments
 (0)