1算法分析

1.时间复杂度分析:

一个程序运行总时间主要和两点有关:

  • 1.执行每条语句的耗时
  • 2.执行每条语句的频率
image.png
image.png

对于大多数程序,得到运行时间的数学模型所需的步骤如下:

  • 1.确定输入模型,定义问题规模
  • 2.识别内循环
  • 3.根据内循环的操作确定成本模型
  • 4.对于给定的输入,判断这些操作的执行频率.
    例如:
    二分查找.他的输入模型是a[],内循环是一个while循环的所有语句,成本模型是比较操作.他的所需比较次数最多为lgN+1.
算法分析中常用函数
描述 记号 定义
向下取整(floor) ⎿x⏌ <=x的最大整数
向上取整(cell) ⎾x⏋ >=x的最小整数
自然对数 lnN LogeN (表示ex=N)
以2为底对数 lgN log2N(表示2x=N)
以2为底的整形对数 ⎿lgN⏌ <=lgN的最大整数
调和级数 HN 1+1/2+1/3+1/4+1/5+…+1/N
N! 1x2x3x4x...xN
2018-04-07 19-28-49 的屏幕截图.png

2018-04-07 19-29-48 的屏幕截图.png

2.空间复杂度分析:

分析内存的使用比分析时间复杂度要简单得多.而且在分析过程中我们会把复杂的对象简化成原始数据类型,而原始数据类型是预先定义好的.而且非常好理解:只需要将变量的数量和他们的类型对应的字节数分别相乘汇总即可.
对象:要知道一个对象所用的内存量,需要将所有实例变量的使用内存与对象本身的开销相加.对象本身开销一般是16字节(包括一个对象类的引用 [8字节] ,垃圾收集信息[4字节]以及同步信息[4字节]).另外一般对象的内存大小会被填充称为8的倍数(也就是对象开销+实例变量+padding=8N, 其中0<=padding<8)填充字节需要根据大小来调整.对象的引用一般是一个内存地址,因此会用8字节.

  • Integer封装的对象内存计算:
2018-04-07 19-36-15 的屏幕截图.png

计算:16+4+?=8N 所以padding=4 ,一共占24 Byte

  • Date对象内存计算:
2018-04-07 19-37-04 的屏幕截图.png

计算 :16+4*3+?=16+12+? =8N (?=4,一共为 32)

  • Counter 对象:
2018-04-07 19-37-43 的屏幕截图.png

计算:16+8+4+?=8N(28+?=8N, ?=4 ,一共为32)

  • 链表:

对于嵌套内部类(非静态类)例如Node 类.还需要一个额外的8字节(用于指向外部类)

public class Node{
private Node next;
private Item item;
     public class Item{
  ...  }
}

此时内存大小计算为 :

内存组成
对象开销[16]
额外开销[8]
Item [引用 8]
Next [引用 8]
Padding =?

16+8+8*2+?=40 (8N)
所以padding =0,一共内存占40byte

  • 数组:

一个原始类型数据的数组一般需要24个字节的头信息(16字节对象开销+4字节保存长度+4字节填充) ,再加上保存值的所需内存 .
例如一个含有N个int 数组 内存为 (24+4N+padding) 字节 会保持8N.
一个N的double 数组 内存为 (24+8N+padding)
一个对象的数组就是一个对象的引用的数组.需要额外加上引用所需内存;
例如:一个含有N个Date的数组.
内存=24+(8 [对象引用大小]+32[对象本身内存大小])N

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容