Quick Sort (destructive)
by jessekinsman
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.2/react-dom.js"></script>
<div id='target'>no snapshots</div>
CSS
td {
color: white;
padding: 5px;
text-align: center;
}
table {
margin-bottom: 10px;
}
Babel + JSX
const quickSort = (nums) => {
if (nums.length < 2) {
return nums;
}
const pivot = nums.pop();
const left = [];
const right = [];
while(nums.length) {
if (nums[0] <= pivot) {
left.push(nums.shift());
} else {
right.push(nums.shift());
}
}
console.log("left " + left.toString());
console.log("right " + right.toString());
const result = quickSort(left);
result.push(pivot);
return result.concat(quickSort(right));
}
// end of visualization script
describe('quickSort', function() {
it('quicksort an array', () => {
const input = [10, 8, 2, 1, 6, 3, 9, 4, 7, 5];
const answer = quickSort(input);
expect(answer).toEqual([1,2,3,4,5,6,7,8,9,10]);
});
});
// load jasmine htmlReporter
(function() {
var env = jasmine.getEnv();
env.addReporter(new jasmine.HtmlReporter());
env.execute();
}());