2019.05.09 读书笔记 关于数据结构
最近在读《大话数据结构》,已经看完了,不知道是不是到了张三丰传授给张无忌太极的境界:好像有什么需要记下来的,又好像不知道该怎么记下来。那就抄书吧
数据结构从逻辑上分为:集合、线性、树形、图形。物理上分为顺序和链式。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。顺序存储一般用于数组,属于静态列表,长度不发生变化的,而链式则是动态列表,所以我们常用的是链式储存,即一个元素分为数据区和引用区,指向下一个元素的地址,如果是双向链表,还会一个指向上一个元素,一个指向下一个元素。
时间复杂度:主要是用在查找和移动。顺序存储,每次排序或者插入数据都会对之前的数据做移动操作,而链式虽然避免了移动,但是查找的时候,只能从一个到另一个的遍历。
用一个简单的例子来说明时间复杂度的算法吧
假设一个数组a[n],如果你要获取a[10]的元素,只需要查找一次,直接跑到10的位置就可以获取了,所以时间复杂度是1,当然了,就算你要同事获取a[1],a[3],a[6]等多个指定下标的元素,由于每次都只需要查找一次,所以复杂度还是1,其实就是求导的结果。如果你要查找元素等于10,那就需要遍历整个数组了,所以复杂度是n,可如果这个数组是一个有序的呢,比如1,2,3,4,5,6,7,8,9.那么你就可以每次从中间查找,先和5比较,如果大了就和8比较,这种每次折半而不是全表扫描的,复杂度就是logn,当然了,如果需要多次for循环的就是n的次方了。
<再加……>

更多精彩