I want to visualize bubble sort in a html canvas. I got the array generation, the sorting and the drawing set up and working.
I am struggling to add a timeout between each comparison in bubble sort and drawing the result for each iteration.
var number;
var cwidth = 500;
var cheight = 400;
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
function createArray() {
// var num = parseInt(document.getElementById('textInput').value);
var num = 10;
number = [...Array(num)].map(() => Math.floor(Math.random() * 100));
drawArray(number);
}
function drawArray(number) {
ctx.clearRect(0, 0, cwidth, cheight);
for (var i = 0; i < number.length; i++) {
ctx.beginPath();
ctx.fillStyle = "#0000cc";
ctx.fillRect((i * 15), 390, 10, ((number[i]) * -1));
ctx.stroke();
}
}
function sortArray() {
for (var i = 0; i < number.length - 1; i++) {
for (var j = 0; j < number.length - 1 - i; j++) {
if (number[j] > number[j + 1]) {
var s = number[j];
number[j] = number[j + 1];
number[j + 1] = s;
}
// Draw new array for each iteration then wait amount x of time
}
}
drawArray(number);
}