栈:后进先出,即最后被压入(push)栈的元素会被第一个弹出来(pop) 不考虑排序
堆栈—》数组讲解
数组数据结构分析
数组字实际开发中越来越被集合取代了。
现在一些算法和数据结构还在用数组外,集合被广泛的使用
数组的长度是固定的
这里的= 是把数组对象内存地址赋予给arr变量
栈内存特点:存储的都是局部变量,变量一旦出了自己的作用域就会马上消失,释放内存
然后用new出来的对象,jvm都会在堆内存中开辟一个新的空间,创建新对象
堆内存特点:
堆内存存的都是对象数据,对象一旦使用完,不会马上从内存中消失,
而是要等到垃圾回收器如GC不定时把垃圾对象回收,这个时候才会释放出内存。
垃圾对象:没有变量引用了。
堆分为最大堆、最小堆,在最大堆中根节点的值最大,在最小堆中根节点的值最小。有很多需要用解决最大小值的问题可以用堆来解决。
算法用的更多的是二维数组
int [][] a = new int [3][4]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { a[i][j] = ++ value; } }
队列:先进先出,即第一个进入队列的元素将会第一个出来 考虑排序
实现队列也有两种方式,一种是链表, 另一种是循环数组
队列和栈在实现上的不同
栈遵循后进先出的原则,所以要在数组或链表同一端做添加和删除操作
队列遵循先进先出的原则, 所以要在数组或链表的两端分别做插入和删除的操作