面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了

时间复杂度是学习算法的基石,今天我们来聊聊为什么要引入时间复杂度,什么是时间复杂度以及如何去算一个算法的时间复杂度
一、刻画算法的运行时间
某日,慧能叫来了一尘打算给他补习补习一下基础知识,只见克写了一段非常简单的代码
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

一尘看老师有点生气,开始虚心请教了
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

为了方便讨论,这里我们把每一条语句的执行时间都看做是一样的,记为一个时间单元
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

① 蓝色框的两条语句,花费两个时间单元
②黑色框的一条语句,花费n+1个时间单元
③红色框的两条语句,花费2*n个时间单元
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

这不是数学吗,一尘心里想到
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

其中的n被我们称为问题的规模,其实就是你处理问题的大小
慧能顺手画了这个函数的图
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

本文主要讨论问题规模和运行时间的关系,假定不同输入和运行时间基本无关
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

二、时间复杂度
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

比如说:T(n)=3n+3, 当n非常大的时候常数3和n的系数3对函数结果的影响就很小了
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

比如:
T(n)=n+1 忽略常数项 T(n)~n
T(n)=n+n^2 忽略低阶项 T(n)~n^2
T(n)=3n 忽略最高阶的系数 T(n)~n
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

还好不用掌握那头疼的数学,一尘心中想到
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

一尘把话题又拉了回来
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

更准确地说O代表了运行时间函数的一个渐进上界,即T(n)在数量级上小于等于f(n)
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

三、时间复杂度的计算
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

一、得出运行时间的函数 二、对函数进行简化
①用常数1来取代运行时间中所有加法常数
②修改后的函数中,只保留最高阶项 ③如果最高阶项存在且不是1,则忽略这个项的系数
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

O(1)也被称为常数阶
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

一尘随手写了一段嵌套循环的代码
【面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了】面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

接着,慧能又写了一段时间复杂度为对数的代码
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

一向数学不太好的一尘此时有点懵
面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

面试|各位学弟学妹,别再看教材了,时间复杂度看这篇就好了
文章图片

总结
算法的学习,第一步就是得先知道啥是时间复杂度,啥是空间复杂度,其实你懂了时间复杂度,也就懂了空间复杂度,建议各位还在校的小伙伴,一定要把数据结构和算法这门课学好。
无论是面试还是提升自己的内容,算法学习基本少不了,我这里给大家推荐一份某 BAT 大佬总结的 Leetcode 刷题笔记:BAT 大佬分类总结的 Leetcode 刷题模版,助你搞定 90% 的面试
另外,也把排序算法系列文章用漫画写好了,这里直接贴出链接吧,你们负责收藏就好了,嘿嘿。不过这里只给出了 7 种必须掌握的排序算法,像桶排序,基数排序这些,了解即可,后期也会写出来滴。
漫画:什么是冒泡排序算法?
漫画:什么是选择排序算法?
漫画:什么是插入排序算法?
漫画:什么是希尔排序算法?
漫画:什么是归并排序算法?
漫画:什么是快速排序算法?
漫画:什么是堆排序算法?
当然,也欢迎大家来的个人网站玩耍:https://www.iamshuaidi.com,从 0 到 1 总结了的个人学习。
作者简洁
作者:大家好,我是,从大学、自学一路走来,深知算法,计算机基础知识的重要性,公众号「玩编程」10万粉丝作者,专业于写这些底层知识,提升我们的内功,期待你的关注,和我一起学习,点击了解我四年大学学 习之路 转载说明:未获得授权,禁止转载

    推荐阅读