理解「时间复杂度」需要「动态」去看它

小数据规模情况下

理解「时间复杂度」需要「动态」去看它_第1张图片

大数据规模情况下

源代码:

Python 代码:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

n = 100

x = np.arange(1, n + 1)

y1 = [np.log2(i) for i in range(1, x.size + 1)]
y2 = [1 for _ in range(1, x.size + 1)]
y3 = [i * np.log2(i) for i in range(1, x.size + 1)]
y4 = [i for i in range(1, x.size + 1)]
y5 = [i * i for i in range(1, x.size + 1)]

fig, ax = plt.subplots(figsize=(8, 8))
ax.plot(x, y1, label='$log_{2} n$')
ax.plot(x, y2, label='$1$')
ax.plot(x, y3, label='$n \log_{2} n$')
ax.plot(x, y4, label='$n$')
ax.plot(x, y5, label='$n^2$')
plt.xlim(0, 100)
plt.ylim(0, 100)

plt.legend(fontsize=16)
plt.savefig("1.jpg")
plt.show()

理解「时间复杂度」需要「动态」去看它_第2张图片

源代码:

Python 代码:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

n = 100000

x = np.arange(1, n + 1)
y1 = [np.log10(i) for i in range(1, x.size + 1)]
y2 = [1 for _ in range(1, x.size + 1)]
y3 = [i * np.log10(i) for i in range(1, x.size + 1)]
y4 = [i for i in range(1, x.size + 1)]
y5 = [i * i / 10000 for i in range(1, x.size + 1)]

fig, ax = plt.subplots(figsize=(16, 4))
ax.plot(x, y1, label='$log_{10} n$')
ax.plot(x, y2, label='$1$')
ax.plot(x, y3, label='$n \log_{10} n$')
ax.plot(x, y4, label='$n$')
ax.plot(x, y5, label='$n^2/10000$')
plt.xlim(0, 100000)
plt.ylim(0, 800000)

plt.legend(fontsize=16)
plt.savefig("2.jpg")

plt.show()

你可能感兴趣的:(力扣,算法)