Quick Sort - not 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

// This is NOT destructive (does not change the param)
const quickSort = (nums) => {
	if (nums.length < 2) return nums;
  const pivot = nums[nums.length-1];
  const left = [];
  const right = [];
  for (let i = 0; i< nums.length-1; i++) {
  	if(nums[i] <= pivot) {
    	left.push(nums[i]);
    } else {
    	right.push(nums[i]);
    }
  }
  return [...quickSort(left), pivot,...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();
}());