time complexity时间复杂度

The time complexity of an algorithm is denoted O(…) where the three dots represent some function. Usually, the variable n denotes the input size.

  1. //O(n)
  2. for (int i = 1; i <= n; i++) {
  3. // code
  4. }
  1. //O(n^2)
  2. for (int i = 1; i <= n; i++) {
  3. for (int j = 1; j <= n; j++) {
  4. // code
  5. }
  6. }

A time complexity does not tell us the exact number of times the code inside a loop is executed, but it only shows the order of magnitude.

  1. //这些都是O(n)
  2. for (int i = 1; i <= 3*n; i++) {
  3. // code
  4. }
  5. for (int i = 1; i <= n+5; i++) {
  6. // code
  7. }
  8. for (int i = 1; i <= n; i += 2) {
  9. // code
  10. }
  1. //这就是O(n^2)的
  2. for (int i = 1; i <= n; i++) {
  3. for (int j = i+1; j <= n; j++) {
  4. // code
  5. }
  6. }

一段程序中,有多个程序段落,整个程序的时间复杂度跟 时间复杂度最大的段落走

  1. for (int i = 1; i <= n; i++) {
  2. // code
  3. }
  4. for (int i = 1; i <= n; i++) {
  5. for (int j = 1; j <= n; j++) {
  6. // code
  7. }
  8. }
  9. for (int i = 1; i <= n; i++) {
  10. // code
  11. }
  12. //这段代码,是O(n^2)的

还有O(nm)

  1. for (int i = 1; i <= n; i++) {
  2. for (int j = 1; j <= m; j++) {
  3. // code
  4. }
  5. }