码迷,mamicode.com
首页 > 其他好文 > 详细

寒假:2

时间:2018-01-30 00:30:37      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:存储空间   heap   运行   变量   malloc   求和   大小   算法   语句   

今天写了trapping rain water,

发现了,有了一些储备的数学知识,很多问题会更容易抽象,也更容易找到解决办法。比如解决trw时的抽象出的极值观点。

发现了,算法是一点一点勾勒出来的,把问题一步步抽象,一步步解决。

知道了算法的时空复杂度的概念,对算法这个概念也有了更深的理解。

具体的,在写trw时,写出了一个找一个数组中的极大值的函数,求两个极大值之间的存水量的函数,以及一组数求和函数。

 

 

 

 

 

 

 

 

 

 

 

 

 

附件:知识点们

复杂度  complexity  

时间复杂度:一个算法执行耗费的时间(语句执行的次数)关于问题规模n的函数(仅考虑函数类型)

最坏时间复杂度,平均时间复杂度,

时间复杂度与具体参数有关(语句执行次数)

时间复杂度可用于评价算法性能(运行时间长短)(规模n不同时)

1(常数,但不一定小,只是不随规模变化),n,对数,线性对数,平方,立方,2指数

分别对应普通代码,二分,循环,分治,双层循环,三层循环,穷举查找

 

空间复杂度:

运行完一个程序需要的存储空间的大小。包括固定部分(指令空间,数据空间(常量和简单变量))和可变部分(动态分配的空间,递归栈所需的空间:为局部变量分配的空间,包括函数的形参变量和代码块内部变量;)。可变部分和算法有关。算法的复杂度指的是算法占用的空间和规模n的关系

 

一个c或c++编译的程序占用的内存分为:

栈区stack:由编译器自动分配或释放,用于存储局部变量和函数参数值。分配时的操作方式类似数据结构栈

堆区heap:由程序员通过调用malloc分配和释放,或者程序结束时由OS回收。不同于数据结构中的堆,分配方式类似于数据结构中的链表。

全局区static:静态数据存储空间,存储全局变量和静态变量。初始化的和未初始化的全局变量和静变量在两块相邻的区域里存放。程序结束后由系统释放。

文字常量区:存放常量字符串。程序结束后由系统释放

程序代码区:存放函数体的二进制代码

 

 

堆栈一方面是两种属于抽象数据类型的数据结构。堆满足一定限制的限制结构,栈中元素有先进后出顺序的线性结构

(抽象数据类型:自定义的数据类型,有操作范围,有处理函数)

 

另一方面,堆栈是两种类型的存储区。特点见上。

 

同时,堆栈又单指栈。

 

算法的时空复杂度会相互影响,不可兼得。类似的,算法的所有性能之间也存在相互影响,要综合考虑包括使用频率,处理数据量的大小,所描述语言的特性,运行机器的系统环境等各方面的因素。

 

寒假:2

标签:存储空间   heap   运行   变量   malloc   求和   大小   算法   语句   

原文地址:https://www.cnblogs.com/guguclaire/p/8379811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!