首页 > 数据库 > 数据库开发技术 > 从一道面试题来了解什么是时间复杂度

一. 前言
这两天耀哥有个学生出去面试,面试官问他:“请分析一下插入排序算法的时间复杂度”。结果这个学生没有回答上来,回来他就问耀哥,时间复杂度是个什么鬼?那耀哥今天就结合这个典型的问题,给大家讲讲什么到底什么是时间复杂度。
关注Java架构栈,干货天天都不断哦!
二. 什么是时间复杂度
我们都知道,一个算法的优劣,其运行时间是一个很重要的考察维度。所谓的时间复杂度,其实就是指算法中包含的简单操作的次数,我们一般不必精确计算出算法的时间复杂度,只需要大致计算出相应的数量级即可。常见的数量级有O(1)、O(LOG2N)、O(N)、O(N*N)等,接下来耀哥给大家一一拆解一下这些常见的时间复杂度。
三. 常见的几个时间复杂度
1.O(1)
无论执行多少行,只要没有循环,时间复杂度就属于常数阶O(1),比如下面这样的代码:
int i = 1;
int j = 2;
int m = i + j;2.(LOG2N)
假设n=8,以下循环第一次等于2,第二次等于4,第三次等于8,经历3次循环就能跳出来循环,如下所示:
int i = 1;
while(i<n){
i = i * 2;
}3.O(N)
不折不扣地执行了N次循行,如下所示:
for(i=1; i<=n; ++i){
// 随便干点什么
}4.O(N*N)
两层循环,执行了N的二次方,如下所示:
for(x=1; i<=n; x++){
for(i=1; i<=n; i++){
j = i;
j++;
}
}四. 后话
经过上面的描述,我相信大家应该大致懂得了什么是时间复杂度。其实时间复杂度只是评价算法的一个维度,咱们一般会从”正确性、时间复杂度、空间复杂度、简单性“四个方面来评价一个算法的好坏,耀哥会在以后的文章中讲解一下其他维度的内容,敬请大家继续关注哦。
扫码咨询了解课程详情,获取课程配套资料!

点击【阅读原文】,免费开始学习Java视频课程!
原文作者:Java架构栈;如有侵权,请联系管理员删除。