数据结构与算法
leevmh
这个作者很懒,什么都没留下…
展开
-
链表
链表VS数组 数组简单易用,在实现上使用的是连续的内存空间,可以借助CPU的缓存机制,预读数组中的数据,所以访问效率更高。而链表在内存中并不是连续存储,所以对CPU缓存不友好,没办法有效预读。 数组的缺点是大小固定,一经声明就要占用整块连续内存空间。如果声明的数组过大,系统可能没有足够的连续内存空间分配给它,导致“内存不足(out ofmemory)”。如果声明的数组过小,则可能出现不够用的情况。这时只能再申请一个更大的内存空间,把原数组拷贝进去,非常费时。链表本身没有大小的限制,天然地支持动态扩容,我觉原创 2020-06-04 15:27:31 · 166 阅读 · 0 评论 -
数组
它用一组连续的内存空间,来存储一组具有相同类型的数据。 数组支持随机访问:a[i]_address = base_address + i * data_type_size,根据下标随机访问的时间复杂度为O(1)。 容器能否完全替代数组? ArrayList最大的优势就是可以将很多数组操作的细节封装起来。比如前面提到的数组插入、删除数据时需要搬移其他数据等。另外,它还有一个优 势,就是支持动态扩容。 因为扩容操作涉及内存申请和数据搬移,是比较耗时的。所以,如果事先能确定需要存储的数据大小,最好在创建Ar.原创 2020-06-01 14:26:12 · 96 阅读 · 0 评论