const Sorter = { sort: function(chords, start, end, getVal, swap) { if (end <= start) { return chords; } var left = start; var right = end; var pivot = Math.floor((right + left) / 2); var pivotval = getVal(pivot); var tmp; var rval; while (left <= right) { while (getVal(left) < pivotval) { left++; } while (getVal(right) > pivotval) { right--; } if (left <= right) { chords = swap(chords, left, right); left++; right--; } break; } Sorter.sort(chords, start, right, getVal, swap); Sorter.sort(chords, left, end, getVal, swap); return chords; } };