针对于第一章算法在计算中的作用的习题

1.2.2 题目:假设我们要比较在同一台计算机上插入排序和合并排序的实现。对于规模为n的输入,

插入排序要运行8步,而合并排序要运行64n*lgn步,当n取怎样的值时,插入排序的性能要优于合并排序?

解答:对于同一台计算机,步骤越少,运行时间也少。肯定性能越好,可以得到,当8n^2<64n*lgn时,插入排序的性能要优于合并排序。即求8n^2-64n*lgn(n>0)小于0的部分。

《针对于第一章算法在计算中的作用的习题》

由图得:当n>1时,插入排序的性能要优于合并排序。

附代码:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
x0 = np.linspace(0,2,3)
y0 = 8*(x0**2) - 64*x0*np.log2(x0)
x = np.linspace(0,1.5,2000)
y = 8*(x**2) - 64*x*np.log2(x)
plt.plot(x,y,'--',x0,y0,'o')
plt.legend(['f(x)'])
plt.grid()
plt.show()

点赞