console
var snapshots=[];
var timer=null;
var arr=[50,21,5,89,13,35,69,44,60,15,51,80,55,71];
function bubbleSort(arr){
if(arr.length<=1){
return arr;
};
var temp=0;
for(var i=0; i<arr.length; i++){
for(var j=0; j<arr.length-i-1; j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
snapshots.push(JSON.parse(JSON.stringify(arr)));
};
};
};
return arr;
};
Array.prototype.bubbleSort=function(){
return bubbleSort(this);
}
function painting(){
var container=document.getElementById("container");
var bars=[].slice.call( document.querySelectorAll(".bar") );
for(var i=0;i<arr.length;i++){
if(bars.length!=arr.length){
var bar=document.createElement("div");
bar.className="bar";
container.appendChild(bar);
}else{
break;
};
};
var snapshot=snapshots.shift() || [];
console.log(snapshot);
if(snapshot.length!=0){
for(var i=0; i<bars.length; i++){
bars[i].innerHTML=snapshot[i];
bars[i].style.height=snapshot[i]*5+"px";
bars[i].style.left=(i+1)*50+"px";
};
}else{
clearInterval(timer);
return;
};
};
arr.bubbleSort();
timer=setInterval(painting,500);
<div id="container"></div>
#container {
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.bar {
width: 20px;
margin-left: 10px;
border: px solid #740A17;
background-color: #CD6B6B;
}