摘要: 堆的应用一:优先级队列 优先级队列首先应该是一个队列。队列最大的特性就是先进先出。但是在优先级队列中,出队顺序不是先进先出,而是按照优先级来,优先级最高的,最先出队。 用堆来实现优先级队列是最直接、最高效的。这是因为,堆和优先级队列非常相似。一个堆就可以看作一个优先级队列。很多时候,它们只是概念上的 阅读全文
posted @ 2018-12-02 19:30 田错 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 堆和堆排序 如何理解堆 堆是一种特殊的树,只要满足以下两点,这个树就是一个堆。 ①完全二叉树,完全二叉树要求除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。 ②树中每一个结点的值都必须大于等于(或小于等于)其子树中每个节点的值。大于等于的情况称为大顶堆,小于等于的情况称为小顶堆。 阅读全文
posted @ 2018-12-02 18:01 田错 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 建造者模式 建造者模式又称生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式主要用于创建一些复杂的对象,这些对象内部构构建间的构造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了 阅读全文
posted @ 2018-12-02 15:19 田错 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 外观模式 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观系统完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。 外观模式的使用时机 首先在设计初期阶段,应该要有意识地将不同的两个层分离,层与层之间建立外观Fac 阅读全文
posted @ 2018-12-02 12:46 田错 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式 定义一个操作中的算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模板方法模式是通过把不变的行为搬到超类,去除子类中的重复方法来体现它的优势。模板方法就是提供了一个很好的代码复用平台。 当不变的和可变的行为在方法的子类实现中 阅读全文
posted @ 2018-12-02 12:01 田错 阅读(213) 评论(0) 推荐(0) 编辑