You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
3.6 KiB
144 lines
3.6 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>D3</title>
|
|
|
|
<link rel="stylesheet" href="vendor/fontawesome/css/font-awesome.css">
|
|
|
|
<style type='text/css'>
|
|
html, body {
|
|
font-family:sans-serif;
|
|
margin:0;
|
|
}
|
|
|
|
svg {
|
|
border:10px solid dodgerblue;
|
|
width:940px;
|
|
}
|
|
|
|
.sorter {
|
|
border:1px solid #e7e7e7;
|
|
margin:20px auto;
|
|
padding:10px;
|
|
width:960px;
|
|
}
|
|
|
|
.slider {
|
|
|
|
}
|
|
|
|
.top {
|
|
background:#f88;
|
|
}
|
|
|
|
.bottom {
|
|
background:#4e0;
|
|
height:100px;
|
|
}
|
|
|
|
button {
|
|
border:1px solid #333;
|
|
background:#888;
|
|
padding:3px;
|
|
}
|
|
|
|
button.fa {
|
|
cursor:pointer;
|
|
font-size:12px;
|
|
height:20px;
|
|
line-height:14px;
|
|
margin-right:5px;
|
|
transition:background 0.2s ease;
|
|
width:20px;
|
|
}
|
|
|
|
button:hover {
|
|
background:#aaa;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
for each one: in place? adaptive? stable? swaps. comparisons. random example. best case example. worst case example.
|
|
|
|
|
|
<h1>Quicksort discussion</h1>
|
|
used by chrome
|
|
<div class="sorter"></div>
|
|
|
|
|
|
<h1>Mergesort discussion</h1>
|
|
used by firefox and safari
|
|
|
|
<div class="sorter"></div>
|
|
|
|
|
|
<h1>Shellsort discussion</h1>
|
|
several ways to pick gap width, but dependence on input data makes gap selection trivial
|
|
|
|
<div class="sorter"></div>
|
|
|
|
<h1>Selection sort discussion</h1>
|
|
http://stackoverflow.com/questions/15799034/insertion-sort-vs-selection-sort
|
|
|
|
<!--
|
|
<h1>Heapsort discussion</h1>
|
|
|
|
<div class="sorter"></div>
|
|
|
|
<h1>Bubblesort discussion</h1>
|
|
NOTE http://stackoverflow.com/questions/17270628/insertion-sort-vs-bubble-sort-algorithms
|
|
<div class="sorter"></div>
|
|
|
|
<h1>Radixsort discussion</h1>
|
|
|
|
<div class="sorter"></div>
|
|
-->
|
|
|
|
|
|
<script type='text/javascript' src='vendor/d3/d3.min.js'></script>
|
|
<script type='text/javascript' src='js/visualizer.js'></script>
|
|
<script type='text/javascript' src='js/sorter.js'></script>
|
|
<script type='text/javascript' src='js/quicksort.js'></script>
|
|
<script type='text/javascript' src='js/mergesort.js'></script>
|
|
<script type='text/javascript' src='js/insertionsort.js'></script>
|
|
<script type='text/javascript' src='js/shellsort.js'></script>
|
|
<script type='text/javascript' src='js/selectionsort.js'></script>
|
|
<script type='text/javascript' src='js/bubblesort.js'></script>
|
|
<script type='text/javascript' src='js/radixsort.js'></script>
|
|
|
|
<script type='text/javascript'>
|
|
var dump = function(arr) {
|
|
var d = [];
|
|
arr.forEach(function(obj) {
|
|
d.push(obj.value);
|
|
})
|
|
|
|
return d.join(',');
|
|
}
|
|
|
|
var SS = new RadixSort();
|
|
|
|
var data = SS.generate(15);
|
|
console.log('DATA: ' + dump(data));
|
|
|
|
var shuffled = SS.shuffle(data);
|
|
console.log('SHUFFLED: ' + dump(shuffled));
|
|
|
|
var ordered = Object.create(shuffled);
|
|
ordered = SS.sort(ordered, 0, ordered.length - 1);
|
|
console.log('ORDERED: ' + dump(ordered));
|
|
|
|
|
|
// Wrap anonymous function to avoid polluting global namespace.
|
|
// (function() {
|
|
// var elements = document.querySelectorAll('.sorter');
|
|
// for (key in elements) {
|
|
// if (elements.hasOwnProperty(key)) {
|
|
// new Visualizer(elements[key]);
|
|
// }
|
|
// }
|
|
// })();
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|