Skip to content

Instantly share code, notes, and snippets.

@abevieiramota
Last active August 30, 2015 13:49
Show Gist options
  • Save abevieiramota/358047c160dbaf1307d6 to your computer and use it in GitHub Desktop.
Save abevieiramota/358047c160dbaf1307d6 to your computer and use it in GitHub Desktop.
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
</head>
<body>
<script type="text/javascript">
var dataset = [5,2,4,7,9,1,0,3,8,6];
var POS_X = 10;
var SVG_WIDTH = 20*dataset.length;
var SVG_HEIGHT = 500;
var TRANSITION_DURATION = 1000;
var TRANSITION_DELAY = 1000;
var svg = d3
.select("body")
.append("svg")
.attr("width", SVG_WIDTH)
.attr("height", SVG_HEIGHT);
var show_arr = function(arr) {
for(var i=0;i<arr.length;i++) {
_dataset[i] = arr[i];
};
var _dataset = d3.entries(_dataset);
var rects_w_data = svg
.selectAll("rect")
.data(_dataset, function(d) { return d.key;})
.enter()
.append("rect")
.attr("x", function(d, i) { return i*20;})
.attr("y", function(d){ return SVG_HEIGHT - d.value * 10;})
.attr("width", 10)
.attr("height", function(d){ return d.value * 10;});
}
var update_arr = function(dataset, delay) {
var _dataset = d3.entries(dataset);
svg
.selectAll("rect")
.data(_dataset, function(d) { return d.key;})
.transition()
.delay(delay)
.duration(1000)
.ease("bounce")
.attr("y", function(d){ return SVG_HEIGHT - d.value * 20;});
}
var switch_arr = function(arr) {
// TODO: verificar se i e j estão dentro do domínio
// TODO: verificar se arr é array rs
};
var bubble_sort = function(arr) {
show_arr(arr);
for(var i=0;i<arr.length - 1;i++) {
var min_value = arr[i];
var ix_min_value = i;
for(var j=i;j<arr.length;j++) {
if(arr[j] < min_value) {
min_value = arr[j];
ix_min_value = j;
}
};
var temp = arr[i];
arr[i] = min_value;
arr[ix_min_value] = temp;
var _dataset = {};
_dataset[i] = min_value;
_dataset[ix_min_value] = temp;
update_arr(_dataset, i*1500);
};
return arr;
};
bubble_sort(dataset);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment