从上数据结构课开始,便逐步接触线性表,堆,栈,队列,串,数组,树,图。 其中,堆和树,图了解的不是很深刻。 另外虽然上完了课,但是感觉对整个数据结构的理解依然是十分的模糊的。
因此这篇记录下堆,这个听了很多遍的结构。(java中的堆区,内存堆等等)。
接着进入正题。
基本的堆结构,很普通。线性的,也是通过操作方式体现它自身的特性感觉。跟队列,栈,差不多。
这个层面的二叉树,跟上一个练习的二分查找树是不一样的。 一个是通过指针实现,一个是通过数组实现。
这个最大堆有这样一些性质,根节点总是大于叶节点。 跟二分搜索树是不一样的。
通过shiftdown 与 extractMax共同实现上述的效果。
堆排序,这里是通过数组实现。
堆练习的内容已经比较多了,遂新开一篇记录一下比较重要的索引堆吧。