algorithm - 费用。算法分析。中的算法
问题描述
可以说 O(n²) 算法的成本总是小于 O(n) 的成本。评论陈述的真实性:
解决方案
不。说一个算法是 O(n²) 意味着至少有一种情况,该算法需要二次运算才能完成。
在 O(n) 算法中,最坏情况将是线性的,因此对于足够大的输入,O(n²) 算法的最坏情况总是比 O(n) 算法需要更多的操作。
O(n) = k * n + a
O(n²) = k2 * n² + k1 * n + b
so we wanna prove that there is a case that O(n) < O(n²)
k * n + a < k2 * n² + k1 * n + b
(k - k1) * n + (a - b) < k2 * n²
(k - k1) / k2 + (a - b) / (k2 * n) < n
我们可以看到,随着n
增长,左侧的常数将保持不变或减少,因此会有一个 O(n) < O(n²) 的点。
推荐阅读
- sql - 如何在 SQL 中向表中添加查询?
- asp.net-core - 在 .Net Core Web API 中跟踪数据库更改并使用 SignalR 向客户端发送相应推送通知的适当方法
- firebase - Firestore 数据库无法在线运行
- android - 无论如何禁用亚行验证弹出窗口
- javascript - 将 Number.MAX_SAFE_INTEGER 乘以 Math.random() 时,我可能会丢失任何十进制数字(精度)吗?
- .htaccess - 尝试使用 HTTP REFERER 和 PHP 创建一个后退按钮,即使在页面自我重新加载后也能正常工作
- visual-studio-code - Visual Studio 终端配置问题
- c# - OpenFileDialog.DereferenceLinks 不起作用
- java - 使用 FTS4 在房间数据库中将“rowid”从 Long 更改为 Int
- php - 如果没有子类别,则按子类别或类别显示相关帖子 wp