For the O(n2) example, let's use the bubble sort algorithm:
function bubbleSort(array, compareFn = defaultCompare) { const { length } = array; for (let i = 0; i < length; i++) { // {1} for (let j = 0; j < length - 1; j++) { // {2} if (compareFn(array[j], array[j + 1]) === Compare.BIGGER_THAN) { swap(array, j, j + 1); } } } return array;}
Consider that lines {1} and {2} have a cost of 1 each. Let's modify the algorithm to calculate the cost as follows:
function bubbleSort(array, compareFn = defaultCompare) { const { length } = array; let cost = 0; for (let i = 0; i < length; i++) { // {1} cost++; for (let j = 0; j < length - 1; j++) { // {2} cost++; if (compareFn(array[j], array[j + 1]) === Compare.BIGGER_THAN) { swap(array, j, j + ...