Я пытаюсь визуализировать алгоритмы сортировки с использованием d3.js, но я просто застрял. Когда я пытаюсь перерисовать графики, включив в него цикл сортировки. на графике отображается только конечное значение. То же самое произошло после использования функции setInterval. Я включил скрипт без всех функций таймера ниже (не включает функцию SetTime)Визуализация алгоритмов сортировки
var arr = new Array(10, 34, 66, 3, 56, 45, 67, 43, 45, 7);
var wi = 500;
var he = 500;
var temp = 0;
//Scaling
var canvas = d3.select("body")
.append("svg")
.attr("width", wi)
.attr("height", he);
for (l = 9; l > 0; l--) {
for(p=0;p<l; p++){
if(arr[p]>arr[p+1]){
swap(p,arr);
}
}
updatevisualization(arr);
}
function swap(n, arr) {
temp = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = temp;
}
//visualizaiton
function updatevisualization(xx) {
var bars = canvas.selectAll("rect")
.data(xx)
.enter()
.append("rect")
.attr("height", function(d) {
return (5 * d);
})
.attr("width", 10)
.attr("x", function(d, i) {
return i * 20;
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
JavaScript является синхронным и браузер GUI обновляет только иметь место, когда код JavaScript выполняется. Вы не увидите ничего, пока не вернетесь из своей функции. Используйте 'setTimeout' (как вы писали, вы пытались). – Amit
@Почему я попробовал. не повезло. – rama41222