《算法导论》第一章 算法在计算中的作用

读《算法导论》的动机

前一段时间,我写了几篇力扣周赛题解,属实力不从心,很多东西讲不清楚,写不出来。

这段时间反思了一下,自认为还是读书太少,故决定读一遍《算法导论》,学习一下大佬们是如何传道解惑的。

这篇博客可能会很长,主要记录一下知识点,学习心得,部分练习题答案等。博客中的代码,统一用 C/C++ 编写。

囿于能力,难免出现错误与不足,欢迎大家斧正~

如果你觉得还不错,欢迎关注我的公众号,一起享受编程的乐趣~

第一章 算法在计算中的作用

练习题

1.1-4

前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?

相同点:两者都是求最短路的距离。

不同点:最短路径只规定了目标点和起始点;旅行商问题还规定了中间的必经点。

1.2-2

假设我们正比较插入排序和归并排序在相同机器上的实现。对规模为 n 的输入,插入排序运行 8 n 2 8n^2 8n2步,而归并排序运行 64 n l g n 64nlgn 64nlgn步。问对哪些 n 值,插入排序优于归并排序。

因为是相同机器,所以单位时间内执行的运算量相同,设为 x 步。

那么得到一个关于运行时间的不等式: 8 n 2 x < 64 n l g n x \frac{8n^2}{x} < \frac{64nlgn}{x} x8n2<x64nlgn

化简一下得: n < 8 l g n n < 8lgn n<8lgn

f ( x ) = n − 8 ∗ l g n f(x) = n - 8*lgn f(x)=n8lgn,函数图像如下:

可知,仅在 n 为 2,3,4,5,6 时,插入排序比归并排序快。

1.2-3

n 的最小值为何值时,运行时间为 100 n 2 100n^2 100n2的算法在相同机器上快于运行时间为 2 n 2^n 2n的另一个算法。

和上一题类似,直接列函数方程: f ( n ) = 100 n 2 − 2 n f(n) = 100n^2 - 2^n f(n)=100n22n

  • 当 1 <= n < 15 时,f(n) > 0
  • 当 n >= 15 时,f(n) < 0

可得,当 n 最小为 15 时,前者快于后者。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值