随笔分类 - 数据结构与算法
摘要:方法一:举例法 先列举一些具体的例子,看能否发现其中的一般规则。 示例:给定一个具体时间,计算时针与分针之间的角度。 方法二:模式匹配法 将现有问题与相似问题作类比,看看内否通过修改相关问题的解法来解决新问题。 分析:这个问题和两个问题有点类似 1)在一个无序的数组中查找最小的元素 这个问题就是遍历
阅读全文
摘要:转载 http://www.cnblogs.com/CherishFX/p/4625382.html 二叉查找树的定义: 二叉查找树或者是一颗空树,或者是一颗具有以下特性的非空二叉树: 1. 若左子树非空,则左子树上所有节点关键字值均小于根节点的关键字; 2. 若右子树非空,则右子树上所有节点关键字
阅读全文
摘要:转载:http://www.cnblogs.com/CherishFX/p/4617105.html 二叉树( Binary Tree) 是 n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成 。 二叉树的遍
阅读全文
摘要:1、队列的顺序存储结构实现 2、循环队列的顺序存储结构实现 3、队列的链式存储结构实现 4、基于LinkedList实现队列结构 转载:https://www.cnblogs.com/CherishFX/p/4608880.html
阅读全文
摘要:转载:https://www.cnblogs.com/CherishFX/p/4608880.html 1、基于数组实现栈 2、基于链表实现栈 3、基于java.util.LinkedList实现
阅读全文
摘要:查找 (Searching ) 就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 平均查找长度(Average Search Length,ASL):需和指定key进行比较的关键字的个数的期望值,称为查找算法在查找成功时的平均查找长度。 对于含有n个数据元素的查找表,
阅读全文
摘要:前面讲的是比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。 一,计数排序(Counting Sort) (1)算法简介 计数排序(Counting sort)是一种稳定的排序
阅读全文
摘要:快速排序算法最早由图灵奖获得者 Tony Hoare 设计出来的 ,被列为 20 世纪十大算法之一。在C++ STL 、Java SDK等开发工具包的源码中都能找到它的某种实现版本。 希尔排序相当于直接插入排序的升级,它们同属于插入排序类,堆排序相当于简单选择排序的升级,它们同属于选择排序类。而快速
阅读全文
摘要:前面我们讲了堆排序,因为它用到了完全二叉树所以效率 比较高。不过堆结构的设计本身是比较复杂的,老实说,能想出这样的结构就挺不容易 , 有没有更直接简单的办法利用完全二叉树来排序呢?当然有。 为了更清晰地说清楚这里的思想,大家来看图 9-8-1 所示,我们将本是无序的数组序列 {16,7,13,10,
阅读全文
摘要:1,什么是堆 堆是具有下列性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 (例如图 9-2 左图所示) ; 或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(例如图 9-2 右图所示)。 2,为什么出现堆排序 前面介绍的(简单)选择排序,需要每次从未排序序列中选
阅读全文
摘要:1,算法描述 算法描述:对于未排序数据(右手抓到的牌),在已排序序列(左手已经排好序的手牌)中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
阅读全文
摘要:1,算法描述 选择排序(Selection-sort),首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 2,实现步骤 初始状态:无序区为R[1..n],有序区为空; 第i趟
阅读全文
摘要:1,排序算法的优劣评价标准 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度: 运行完一个程序所需内存的大小。 2,算法描述 算法描述:它重复地走访过要排序的
阅读全文
摘要:1,相关概念 路径长度,从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。 树的路径长度就是从树根到每一结点的路径长度之和。 二叉树a的树路径长度就为1+1+2+2+3+3+4+4=20 。二叉树b的树路径长度就为 1+2+3+3+2+1+2+2=16 。 结
阅读全文
摘要:1,数据结构相关概念 1.1数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 1.2结构:简单的理解就是关系。 1.3数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 1.4按照视点的不同,我们把数据结构分为逻辑结构和物理结构。 1)
阅读全文