快排 加 一个for 时间复杂度是多少呢
初学算法,不太懂这块的概念,比如一个函数
function fn(){
//快排
//for(i = 0; i < n; i++){}
}
像这样的话,这个时间复杂度怎么算呢,是O(nlogn+n)吗,还是时间复杂度就不能这么算
望各位不吝赐教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
算大的那个 o(nlogn)
百度百科:
重点的地方帮你标粗了,你指的O(nlogn+n) 相当于这个示例中的
T(n)=n^3+n^2
,但是示例的时间复杂度是f(n)=n^3,因为当n极限大时,n^2相对于n^3忽略不计了,所以最终时间复杂度就是f(n)=n^3。换句话说,时间复杂度基本只有1,log2n,n,n log2n ,n的平方,n的三次方,2的n次方,n!
这几种情况,不会存在你这个nlogn+n这种情况初学者可以简单地理解为一个
for
循环就是一个O(n)
,for循环嵌套一个循环就是for(n^2)
,不嵌套的两(多)个for循环依旧是O(n)
。在复杂度的计算里,相加的关系是不会引起复杂度数量级变化的,只有次方或者log才会引起数量级的变化
例如:
这应该是根据数学里的无穷大的相关思想来的,希望可以帮助到你。