关于时间复杂度和空间复杂度的一些想法
来源:互联网 发布:中国医疗人工智能公司 编辑:程序博客网 时间:2024/05/17 03:52
在学C语言编程的时候,相信很多朋友都不会涉及时间复杂度和空间复杂度的概念,我在学谭浩强的C的时候,也不曾有过关于复杂度的概念,后来学习了数据结构,其中里面的几种结构,才真正对复杂度有了认识,原因是C语言编程,即使是ACM程序题,也未必有严格的时间和空间限制,一个小小的程序,少则30行,多则6、70行,恐怕也就0.几秒,但是一旦当程序的功能逐渐增多,需要解决的问题逐渐细化,而使程序变得异常庞大时,一旦运行起来,就不是几秒的问题,更何况使用者还不是我们这些亲生的父母!想想那些用户们如何受得了!
拿冒泡排序来说,时间复杂度是n的平方,即使最理想的情况下, 也只是可怜的n,所以可见,一个好的算法对一个问题的解决是多么的重要!
空间复杂度说的应该是内存的问题,从内存的角度来分析和看问题,一个程序的好坏,程序占用的内存的资源的优劣,看它内存的申请情况,内存是否得到有效的利用。
比如分配内存有两种方法:1、直接定义变量,因为定义变量的同时就申请了内存空间;2,malloc,这是在堆内存中申请,当然因为不同的变量,其空间的性质是不一样的,根据内存的实际情况,有栈 堆 文字常量区 静态存储区,虽然都是内存,但每一个的使用又都是不一样的,可自己看书
我对空间复杂度的理解就是对内存的使用效率
这两个概念是一个程序好坏的判断指标吧,当然,不一定两个都好才是最优的,这要看用户的需求,可能用户需要程序的时间尽可能短,那就有可能牺牲空间复杂度换来时间复杂度,有的可能刚好相反。比如数组,就是典型的以时间换空间的结构,而链表则是典型的以空间换时间的数据结构。
注意:以上仅是我个人在闲人一枚的时候,发发吐沫,可能会有表述和知识上的错误认识,望路过的朋友给予指点和批评,也希望和你探讨和交流编程
- 关于时间复杂度和空间复杂度的一些想法
- 关于计算时间复杂度和空间复杂度
- 关于计算时间复杂度和空间复杂度
- 【c++】关于时间复杂度和空间复杂度的相关问题
- 关于几种排序的时间复杂度和空间复杂度
- 关于时间复杂度和空间复杂度的计算
- 时间的复杂度和空间的复杂度
- 时间复杂度和空间复杂度的概念
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度
- CocosBuilder 多分辨率基础
- Sum Root to Leaf Numbers
- Can't exec "libtoolize" on Ubuntu
- ZOJ3508_The War(网络流最大流)
- hdu2096 小明A+B
- 关于时间复杂度和空间复杂度的一些想法
- 黑马程序员——交通管理和银行调度业务系统
- 树链剖分-点的分治(dis[i]+dis[j]==k的点对数量)
- stl vector的学习与总结
- POJ 2309 BST (树状数组)
- poj 1569 三角形求面积(形内不包含其他点的最大三角形面积)
- 栈的基本运算实现
- C#画斜线时怎么消除锯齿呢?
- 矩阵 快速幂