时间复杂度

118 阅读1分钟

时间复杂度O(n^2)和O(nlog n)差距有多大? - lintungmao - 博客园 (cnblogs.com)

0. 时间复杂度

常见的时间复杂度有(表格越靠后表示越不理想):

复杂度名称
O(1)O(1)常数阶
O(logn)O(logn)对数阶
O(n)O(n)线性阶
O(nlogn)O(nlogn)线性对数阶
O(n2)O(n^2)平方阶
O(n3)O(n^3)立方阶
O(nk)O(n^k)kk 次方阶(k>3k>3kZk∈Z
O(2n)O(2^n)指数阶

例如,我们熟悉的插入排序(Insertion Sort)算法的时间复杂度是O(n2)O(n^2),而合并排序(Merge Sort)算法的时间复杂度是O(nlogn)O(nlogn) 那么这些复杂度之间的差距是怎么样的呢?有些小伙伴会疑问,自己写的算法虽然是高复杂度但是也用的好好的,为什么要纠结于这个概念呢?

我们不妨来探索一下今天的问题:O(n2)O(n^2)O(nlogn)O(nlogn)差距有多大?

1. O(n2)O(n^2)O(nlogn)O(nlogn)差距有多大?

2024-03-12_124414

2. 总结

算法时间复杂度的量级差异,也许在小规模的问题下,表现差别不大。但是时间复杂度高的算法,对问题规模的变化更加敏感,因而当问题的规模变得很大的时候,靠拥有高阶时间复杂度的算法来求解并不可靠!

(更新)我从网络上找到了一个直观的各个阶的复杂度的对比,大家不妨参考一下: Big O Complexity Chart

参考:

Thomas H. Cormen, et al., Introduction to Algorithms Part I 1.2 www.bigocheatsheet.com