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

本文探讨了在相同计算机环境下,插入排序和合并排序在不同规模输入时的性能对比,通过数学推导和代码验证,揭示了插入排序在特定规模下优于合并排序的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值