Heap Sort 发表于 2015-11-16 | 分类于 algorithm | | 阅读次数: 堆排序(Heapsort)是指利用二叉堆这种数据结构所设计的一种排序算法。 二叉堆二叉堆是一种特殊的堆,其有以下特性: 二叉堆是完全二叉树或者是近似完全二叉树 每个节点的左子树和右子树都是一个二叉堆 父节点的键值总是与子节点的键值保持固定的序关系(parent>=son || parent<=son) 当父节点的键值总是大于或等于任何一个子节点的键值时为 最大堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为 最小堆。 阅读全文 »
Shell Sort 发表于 2015-11-14 | 分类于 algorithm | | 阅读次数: 原理希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 具体步骤: 取一个大于1的整数n1,将待排序元素分为n1组,间隔为n1的元素为同一组 各组分别进行插入排序 取正整数n2,满足n2 < n1,继续分组,并各组排序 重复上述过程,直到nx = 1,此时,所有的待排序元素都为同一组,进行插入排序,至此,排序完成。 阅读全文 »
Insertion Sort 发表于 2015-11-13 | 分类于 algorithm | | 阅读次数: 原理插入排序的核心思想是把一个元素插入到已排序元素列表的正确位置,通常做法是:从右向左遍历已排序元素列表,小于则接换位置,大于等于则停止。具体步骤: 将待排序元素列表的第一个作为已排序元素 取未排序列表的首个元素A(本次为第二个元素)与已排序元素的末尾元素B(本次为第一个元素比较)比较 A < B 双方交换位置,A继续与B上一个元素C比较 直到A >= X则说明该元素已经找到相应位置,A元素已经被放置在正确位置 …重复 2 3 4 直到最后一个元素插入相应的位置,排序结束 阅读全文 »
Selection Sort 发表于 2015-11-13 | 分类于 algorithm | | 阅读次数: 原理选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下: 遍历所有元素,选出最大或者最小的元素,与第一个元素(最后一个亦可)交换位置 遍历剩余的元素,继续选出最大或者最小元素,与第二个元素交换位置 … 直到最后一个元素,至此,排序完毕 阅读全文 »
代理模式 发表于 2013-09-24 | 分类于 design pattern | | 阅读次数: 说明 定义代理模式,为一个对象提供一个替身或占位符以控制对这个对象的访问。被代理的对象可以是远程的对象、创建开销大的对象、需要安全控制的对象。 阅读全文 »
状态模式 发表于 2013-09-23 | 分类于 design pattern | | 阅读次数: 说明 定义状态模式,允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 阅读全文 »
策略模式 发表于 2013-09-23 | 分类于 design pattern | | 阅读次数: 说明 定义策略模式,属于对象的行文模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响客户端代码的情况下发生变化。 阅读全文 »
组合模式 发表于 2013-09-22 | 分类于 design pattern | | 阅读次数: 说明 定义组合模式,允许你将对象组合成树形来表达结构来表现“整体/部分”层次结构。组合能让用户以一致的方式处理个别对象及对象组合。 阅读全文 »
适配器模式 发表于 2013-09-22 | 分类于 design pattern | | 阅读次数: 适配器模式 定义将一个类转换成客户希望看到的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单来说:你现在有一个A的对象,但是现在需要B接口的对象,通过适配器模式可将A伪装成一个B的对象,达到目的,A的对象、B接口在功能上要类似。核心便是转化二字。 阅读全文 »