Why is the complexity class expression this?

Click For Summary
The discussion centers on understanding the time complexity of a sorting algorithm implemented in C++. The provided code snippet demonstrates a simple sorting method that has a time complexity of O(N^2), as indicated by the professor's expression of 8N^2 + 12N + 6. The key point is that the highest degree term, N^2, dictates the complexity class, while constants are disregarded for large N. There is uncertainty about how the coefficients in the expression were derived, with suggestions that they may result from empirical measurements based on specific compiler behavior or could be arbitrary. The number of operations in the worst-case scenario is noted to follow a second-degree polynomial, reflecting the nested loops where the outer loop runs N times and the inner loop averages N/2 iterations.
Xari
Messages
3
Reaction score
0
I'm trying to understand complexity class algorithms off of my professor's lecture notes, but I still can't get a hang of it. void sort(int a[], int N) { //N is the length of the array
for (int base=0; base<N; ++base)
for (int check=base+1; check<N; ++check)
if (a[base] > a[check])
std::swap(a[base], a[check]);​
}

On his notes he says the expression for this is 8N^2+12N+6.From what I understand fully the complexity class for this is N^2 because it is the fastest growing out of the rest. We ignore constants because they're irrelevant when going to infinity.

However, I want to know how he got the coefficients.
 
Technology news on Phys.org
Xari said:
I'm trying to understand complexity class algorithms off of my professor's lecture notes, but I still can't get a hang of it. void sort(int a[], int N) { //N is the length of the array
for (int base=0; base<N; ++base)
for (int check=base+1; check<N; ++check)
if (a[base] > a[check])
std::swap(a[base], a[check]);​
}

On his notes he says the expression for this is 8N^2+12N+6.From what I understand fully the complexity class for this is N^2 because it is the fastest growing out of the rest. We ignore constants because they're irrelevant when going to infinity.

However, I want to know how he got the coefficients.
I don't think one can answer this question with the information given. It depends on how the compiler translates the C++ code into machine language.
Probably the precise 8N²+12N+6 formula was empirically derived with a given compiler for a worst case scenario.
Or maybe these values are just arbitrary. The number of instructions executed in a worst case scenario will be given by a second-degree polynomial (N for the first loop, N/2 on average for the inner loop) in N.
 
Last edited:
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 25 ·
Replies
25
Views
2K
  • · Replies 36 ·
2
Replies
36
Views
3K
Replies
5
Views
2K
  • · Replies 23 ·
Replies
23
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K