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();
}());