【算法导论系列】开篇,与时间复杂度

本文作为算法导论系列的开篇,深入浅出地介绍了算法时间复杂度的概念,包括O记号、Ω记号和Θ记号,旨在帮助读者以更直观的方式理解算法的运行效率。通过实例解析,阐述了如何分析和判断算法的时间复杂度,为后续的算法学习奠定基础。
摘要由CSDN通过智能技术生成

经过考虑,还是准备写这样一个系列的文章了,初衷是帮助各位更好地理解部分算法。笔者之前阅读了《算法导论》(机械工业出版社)的部分章节,感受是内容非常全面,但是有些语言过于书面或者数学化,对于阅读理解不太好的同学(比如说我)或数学一般般的同学(还比如说我)不是十分友好。我们学习算法更多地是为了应用,需要明白怎么做。当时学习的时候,也参考了许多大大写的文章,有些讲解通俗,令人茅塞顿开。在这个系列中,我将以尽可能通俗清晰的语言,告诉大家某些算法是如何进行的。

作为开篇,先讲解一下算法的最基本问题——时间复杂度吧。

时间复杂度

算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。时间复杂度给出了算法的运行时间与问题的规模n的关系,这个n在不同问题中有不同的体现,例如输入的数据个数、正方形边长等,由于计算机性能的不同,无法得到完全精确的时间与问题规模的函数关系。因此时间复杂度讨论的是问题的求解时间的量级,也就是求解时间随规模增长的速度。

例如,时间复杂度

T\left ( n \right )= n

代表问题求解时间随规模增加呈线性增长

T\left ( n \right )=n^{2}

代表问题求解时间随规模增加呈平方级增长

渐进记号

为了表达时间复杂度函数的某些重要的性质,常常使用一些渐进记号,这些记号通常表示函数的上界、下界或紧确界。这部分对应了微积分或实分析的函数极限概念。

O记号

大O记号表示渐进上界。对于给定的函数g(n),O(g(n))代表一个函数族,定义为:

O\left ( g\left ( n \right ) \right )= \left \{ f\left ( n \right ):{\exists}c> 0,n_{0}> 0,s.t.\ {\forall}n\geq n_{0},0\leqslant f\left ( n \right )\leqslant cg\left ( n \right )\right \}

注:

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值