algorithm - What is the n in big-O notation? -
the question rather simple, can't find enough answer. on the upvoted question regarding big-o notation, says that:
for example, sorting algorithms typically compared based on comparison operations (comparing 2 nodes determine relative ordering).
now let's consider simple bubble sort algorithm:
for (int = arr.length - 1; > 0; i--) { (int j = 0; j < i; j++) { if (arr[j] > arr[j+1]) { switchplaces(...) } } }
i know worst case o(n²)
, best case o(n)
, n
exactly? if attempt sort sorted algorithm (best case), end doing nothing, why still o(n)
? looping through 2 for-loops still, if should o(n²)
. n
can't number of comparison operations, because still compare elements, right?
n
size of input. array, number of elements.
to see different cases, need change algorithm:
for (int = arr.length - 1; > 0 ; i--) { boolean swapped = false; (int j = 0; j<i; j++) { if (arr[j] > arr[j+1]) { switchplaces(...); swapped = true; } } if(!swapped) { break; } }
your algorithm's best/worst cases both o(n^2)
, possibility of returning early, best-case o(n)
.
Comments
Post a Comment