D3 setInterval()选择排序

时间:2016-09-02 17:36:03

标签: javascript d3.js

我试图通过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;
  });

}

0 个答案:

没有答案