标签:而不是 fifo 使用 作用 table 它的 重启 优先级队列 局部变量
1.什么是堆?
2.操作
addElement操作:
(1)该方法将给定的元素添加到堆中的恰当位置处,且维持该队的完全性属性和有序属性。
(2)因为一个堆就是一颗完全树,所以对于插入的新结点而言,只存在一个正确的位置,且要么是h层左边下层的下一个空位置,要么是h+1层左边的第1个位置(如果h层是满的话)
removeMin操作:
(1)该方法将删除最小堆中的最小元素并返回它。
(2)由于最小元素是存储在最小堆的根处,所以我们需要返回存储在根处的元素并用堆中的另一个元素替换它。
(3)要维持该树的完全性,那么只有一个能替换根的合法元素,且它是存储在树中最末一片叶子上的元素。
findMin操作
(1)该方法将返回一个指向该最小堆中最小元素的引用。
(2)由于该元素总是被存储在该树的根处,所以实现这一方法只需通过返回存储在根处的元素即可。
addElement操作:
removeMin操作:
findMin操作:
addElement操作:
removeMin操作:
findMin操作:
堆、栈、堆栈,都是java中的储存结构。堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。堆栈其实堆栈本身就是栈,只是换了个抽象的名字。
堆、栈区别总结:
堆:在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。
栈:是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。
①栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
②堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
①栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
②堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
①堆(数据结构):堆可以被看成是一棵树,如:堆排序。
②栈(数据结构):一种先进后出的数据结构。
问题1:在运行程序是显示没有Romefist()方法,如下图
问题1解决方案:首先,我检查了我的方法,发现在ListADT里面没有写入方法;之后,我补上了Romefist()方法,但是我发现这个问题并没有解决,也就是说我的这不仅仅是方法的问题,之后我问了赵晓海同学,他说是接口出现了问题,我采用了无序接口,然而我并没有听懂,最后我的解决方法是将这两个文件类复制了以后,删掉!删掉!删掉!然后关机,然后重启,然后打开IDEA,然后重新新建文件,然后粘贴,然后就没有然后了,呵!
(statistics.sh脚本的运行结果截图)
无
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 20/20 | |
第二周 | 941/8481 | 1/2 | 18/20 | |
第三周 | 653/9134 | 1/3 | 22/20 | |
第四周 | 1728/4385 | 2/5 | 8/28 | |
第五周 | 933/5318 | 1/6 | 18/20 | |
第六周 | 1082/5877 | 1/7 | 20/18 | |
第七周 | 932/6721 | 1/8 | 18/18 | |
第八周 | 1023/8438 | 2/10 | 24/20 |
20172325 2018-2019-2 《Java程序设计》第八周学习总结
标签:而不是 fifo 使用 作用 table 它的 重启 优先级队列 局部变量
原文地址:https://www.cnblogs.com/20172325DYK/p/9940981.html