我试图通过D3展示选择排序的工作方式。每次我调用我的selectionSort,它会等待适当的时间,然后只显示已排序的数字。我甚至通过控制台查看,似乎控制台只是多次打印排序数组而不是在每次交换时遍历它。
function selectionSort(data) {
for (var i = 0; i < data.length; i++) {
for (var j = i + 1; j < data.length; j++) {
if (data[i] > data[j]) {
var temp = data[i];
data[i] = data[j];
data[j] = temp;
setTimeout(function() {
update(data);
}, 3000);
}
}
}
}
var data = [5, 3, 1, 2, 4];
var svg = d3.select("#first").append("svg")
.attr("width", 500)
.attr("height", 500);
update(data);
selectionSort(data);
function update(data) {
var bar = svg.selectAll(".myText").data(data);
bar.exit().remove();
bar.enter()
.append("text")
.attr("class", "myText")
.attr("x", function(d, i) {
return 20 + i*16;
})
.attr("y", 20);
bar.text(function(d) {
return d;
});
}