Async JS bubble sort
HTML
<!--
bubble sort from: http://www.stoimen.com/blog/2010/07/09/friday-algorithms-javascript-bubble-sort/
-->
<script>
updateDOM = true
function createRandomArray(limit) {
var arr = []
for (var i=0, t=limit; i<t; i++) {
arr.push(Math.round(Math.random() * t))
}
return arr
}
a = createRandomArray(50000)
b = a.slice()
function bubbleSort(a)
{
var swapped
do {
swapped = false
for (var i=0; i < a.length-1; i++) {
if (a[i] > a[i+1]) {
var temp = a[i]
a[i] = a[i+1]
a[i+1] = temp
swapped = true
}
}
} while (swapped)
}
function stepThroughArray(a) {
var swapped = false
var counter = 0
do{
for (var i=0; i < a.length-1; i++) {
if (a[i] > a[i+1]) {
var temp = a[i]
a[i] = a[i+1]
a[i+1] = temp
swapped = true
}
}
counter = counter + 1
} while(counter < 100)
return swapped
}
function asyncBubbleSort(a) {
window.setTimeout( () => {
if(stepThroughArray(a))
asyncBubbleSort(a)
else {
d2 = new Date()
updateDOM = false
}
}, 0)
}
d3 = new Date()
//bubbleSort(b)
d4 = new Date()
d1 = new Date()
asyncBubbleSort(a)
</script>
<body>
<p id="foo"></p>
<input type="submit" value="Submit">
<script>
var inter = window.setInterval(() => {
document.getElementById("foo").innerHTML = Math.round(Math.random() * 100)
if(!updateDOM) {
document.getElementById("foo").innerHTML = "t_SYNC: " + (d4-d3)/1000 + "s || " + "t_ASYNC: " + (d2-d1)/1000 + "s"
window.clearInterval(inter)
}
}, 25)
</script>
</body>