time-complexity - 通过约简确定解的时间复杂度
问题描述
假设您找到了A
问题的解决方案并试图了解它的复杂性。你A
通过调用你的B
子例程总共 n^2 次来解决,并且还做了大量的额外工作。
如果
B
是选择排序,这个解决方案的时间复杂度是多少?如果
B
是归并排序,这个解决方案的时间复杂度是多少?
我对第一个问题的回答是n^2
,对第二个问题的回答是nlogn
。任何想法都将不胜感激我的回答。
解决方案
我假设“解决方案”是指“算法”,而“这个解决方案”是指A
通过调用B
n^2
时间来解决问题的算法。此外,我假设n
您的意思是输入的大小。
那么如果B
是选择排序,这是一种O(n^2)
算法,那么求解的算法A
就是O(n^2 * n^2) = O(n^4)
。
如果B
是归并排序,即O(n log n)
,则求解算法A
为O(n^2* n log n) = O(n^3 log n)
。
推荐阅读
- javascript - 通过 Webpack 移动文件
- java - 如何更改子类的属性值
- oracle - 设置 NLS_LANG
- ruby-on-rails - 捆绑安装不适用于 bundler 2.0.1 的 rails-4.2.6
- r - 使用 ggplot 为绘图中的特定点着色
- tfs - 调用目标已引发 TFS 2017 构建定义异常
- bash - 如何从具有 bash 文件名的列表中读取全局变量?
- azure-devops - Azure DevOps 2019 为什么我们的 Burndown 图表中没有跟踪故事点
- python - 按位或“|” 与 Python 中两个的正幂的加法“+”
- node.js - 如何使用自定义 url 和文件夹将图像上传到 cloudinary