假设我有两种算法:
for (int i = 0; i < n; i++) {
  for (int j = 0; j < n; j++) {
    //do something in constant time
  }
}
Run Code Online (Sandbox Code Playgroud)
这很自然O(n^2).假设我也有:
for (int i = 0; i < 100; i++) {
  for (int j = 0; j < n; j++) {
    //do something in constant time
  }
}
Run Code Online (Sandbox Code Playgroud)
这是 O(n) + O(n) + O(n) + O(n)  + ... O(n) + = O(n)
似乎即使我的第二个算法是O(n),它也需要更长的时间.有人可以扩展吗?我提出它是因为我经常看到算法,例如,他们将首先执行排序步骤或类似的事情,并且在确定总复杂度时,它只是限制算法的最复杂元素.