摘要: (六)归并排序 (七)快速排序希尔排序相当与直接插入排序的升级,堆排序相当于简单选择排序的升级,而接下来要介绍的快速排序其实是冒泡排序的升级。快速排序的基本思想是:每次在待排数组中选定一个基准元素,通过一趟排序,使得位于基准元素右侧的元素均大于此基准元素,基准元素左侧的元素均小于此基准元素。这样再... 阅读全文
posted @ 2015-09-28 16:36 torresliang 阅读(133) 评论(0) 推荐(0) 编辑
摘要: (五)堆排序堆是具有以下性质的完全二叉树:每个结点的值都大于等于(小于等于)其左右孩子结点的值,称为大顶堆(小顶堆)。因此,根结点一定是整个堆的最大值(最小值)。前面讲到的简单选择排序在确定每个当前的最小值时进行了多次比较,虽然这是必须的,但是算法执行过程中并没有把比较结果保存下来,导致了无谓的一... 阅读全文
posted @ 2015-09-23 22:53 torresliang 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 排序排序的定义非常简单,就是把乱序状态下的众多元素整理成有序状态。关于排序,有稳定和不稳定之分。关于排序算法,有内排序和外排序之分。本文将对内排序的众多算法进行实现和比较。首先,我们来看一下衡量一个算法性能的因素:(1)时间性能:在内排序算法中,主要有两种操作:比较和移动。衡量一个算法的优劣时,时... 阅读全文
posted @ 2015-09-23 21:15 torresliang 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 树(tree)是n个结点的有限集。n=0时表示树为空树。在任意一棵非空树中,有且只有一个结点为根结点(root),当n 1时,其余结点可以分为许多个互不相交的有限集T1、T2···,其中每一个集合本身也是一棵树,并且成为根结点的子树。如果把上述中的很多集合换为两个集合,就成了树中一种实用价值比较高的... 阅读全文
posted @ 2015-09-21 19:52 torresliang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 本次讨论单向链表的排序。本质上讲,链表的排序与数组的排序在算法上有很多相通的地方,但是由于单向链表只能向后访问的特殊性,那些要求随机访问的排序算法在链表的排序上并不能施展手脚,所以只能采用相邻比较的排序方法:冒泡法,而且只能从前向后冒泡。链表的另一个问题是由于长度不是已知的,所以终止条件只能通过节点... 阅读全文
posted @ 2015-09-10 15:46 torresliang 阅读(4433) 评论(0) 推荐(0) 编辑
摘要: 链表是这样的一种数据结构,其中的各个对象按照线性顺序排列。链表又有单向链表、双向链表、有序链表、无序链表、循环链表及以上各特性组合的链表等,链表尾动态集合提供了一种简单而灵活的表示方法。与数组的线性顺序由其下标决定不同的是,链表的顺序由各个对象里的指针决定。一般情况下,链表由节点(node)串联而成... 阅读全文
posted @ 2015-09-01 15:31 torresliang 阅读(1944) 评论(0) 推荐(0) 编辑
摘要: 队列实现的是一种先入先出(FIFO)策略。队列中的INSERT操作称为ENQUEUE,DELETE操作称为DEQUEUE。队列的先入先出特性如同生活中的排队现象一样。因为队列既有队头,又有队尾,所以在实现是需要一个数组和两个分别指向对头和队尾的属性。关于队列属性,现有以下说明:1.队头属性指向队头元... 阅读全文
posted @ 2015-08-31 16:47 torresliang 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 栈实现的是一种后进先出(LIFO)策略。栈上的INSERT操作称为PUSH,而无元素参数的DELETE操作称为POP。可以使用一个数组来实现一个栈,该数组有一个属性,指向最新插入的元素。以下用Java实现了一个可变长度的堆栈,初始化时指定栈的初始长度,当堆栈空间不足时,数组自动复制并且容量扩容为以前... 阅读全文
posted @ 2015-08-31 15:26 torresliang 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 装饰者模式的应用实例 - 咖啡馆----------星巴克咖啡馆想要一份菜单系统,要求能够计算不同种类咖啡加上不同调料(牛奶、豆浆、摩卡、奶泡。。。)的价格。Tom做了如下实现:![](http://i.imgur.com/kDlbzm3.jpg)每个咖啡都要继承这个饮料类,然后对是否有各种调料进行... 阅读全文
posted @ 2015-03-11 23:23 torresliang 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 观察者模式的应用实例 - 天气预报----------你的公司刚刚赢得一份气象观测站开发的合同,要求三个布告板能根据检测中心气象参数的变化而实时变化。这个就是观察者模式的一个实例,像这样实例还有很多,如报纸的订购,每天的报纸都会发送给那些订阅者。如果你不想订阅了,当然也可以取消订阅,从此便再也不会收... 阅读全文
posted @ 2015-03-07 20:43 torresliang 阅读(163) 评论(0) 推荐(0) 编辑