软件开发者面试百问-----用堆或者栈存储数据的区别是什么?
2009-03-28 10:48
645 查看
因为这里讨论的是数据结构,所以我们从数据结构方面来考虑堆和栈。
堆:
这个词最初从堆排序中衍生出来的,常见的堆有二叉堆,二项堆,斐波那契堆。
最简单的是二叉堆,其实就是一棵完全二叉树。树的每一层都是填满的,最后一层除外。
二叉堆分为最大堆和最小堆,最大堆的性质如下:
根节点的值大于其所有孩子的值,最小堆相反。
二叉堆常用来构造优先级队列,或者完成堆排序。
栈:
很简单,就是只有一个出口的数据结构,有push和pop两种操作。
其他的堆和栈的区别从其他角度也有:
堆是程序员操作的存储区,由程序员管理
栈是操作系统管理的存储区
堆:
这个词最初从堆排序中衍生出来的,常见的堆有二叉堆,二项堆,斐波那契堆。
最简单的是二叉堆,其实就是一棵完全二叉树。树的每一层都是填满的,最后一层除外。
二叉堆分为最大堆和最小堆,最大堆的性质如下:
根节点的值大于其所有孩子的值,最小堆相反。
二叉堆常用来构造优先级队列,或者完成堆排序。
栈:
很简单,就是只有一个出口的数据结构,有push和pop两种操作。
其他的堆和栈的区别从其他角度也有:
堆是程序员操作的存储区,由程序员管理
栈是操作系统管理的存储区
相关文章推荐
- 软件开发者面试百问-----队列和堆栈区别是什么?
- 软件开发者面试百问-----怎样在XML文档中存储足球比赛结果(包括队伍和比分)?
- 软件开发者面试百问-----看别人代码的时候,你最关心什么地方?
- 软件开发者面试百问-----怎样以最有效的方式在数据库中存储颜色值?
- 软件开发者面试百问-----在N层架构中都有哪些层?它们各自的职责是什么?
- 软件开发者面试百问-----在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?
- 软件开发者面试百问-----你知道设计模式吗?你用过哪些设计模式?在什么场合下用的?
- 软件开发者面试百问-----怎样在数据库中存储N维向量?
- 软件开发者面试百问-----解释一下什么是测试驱动开发,举出极限编程中的一些原则
- 软件开发者面试百问-----是否了解什么是无状态的业务层?长事务如何与之相适应?
- 软件开发者面试百问-----你愿意用什么类型的语言来编写复杂的算法?
- 软件开发者面试百问-----什么是低耦合和高聚合?封装原则又是什么意思?
- 软件开发者面试百问-----不管是书、杂志还是网络,你从中所学到的最后一点算法知识是什么?
- 软件开发者面试百问答案,老紫竹研究室出品(已经有64个)
- 软件开发者面试百问
- 软件开发者面试百问-----面向对象设计和面向组件设计有哪些不同之处?
- 软件开发者面试百问
- 软件开发者面试百问
- 软件开发者面试百问
- 软件开发者面试百问(ZT)