Тебе нужно понять, что ты здесь делаешь.Если вы вызываете setTimeout так, как вы это делаете, это не служит цели, потому что начальный цикл все еще завершается без ожидания вашего setTimeout.Итак, вы должны: 1. Снять с петель и 2. Вызвать вашу функцию отрисовки перед тем, как разбить
var arr = [5,4,4,6,7,7,21,45,5,7,87,1,3,5,65];
function sort(){
var len = arr.length;
loop1:
for (var i = len-1; i>=0; i--){
loop2:
for(var j = 1; j<=i; j++){
if(arr[j-1]>arr[j]){
var temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
console.log(arr);
setTimeout(sort, 1000);
break loop1;
}
}
}
}
sort();