数据结构与算法
CGZ_PaPa
CGZ IN GZ.
展开
-
哈希表查找、哈希冲突-面试题
哈希查找是面试中常见的问题。本文为自己梳理一下知识点。 对于大多数查找算法,其查找效率取决于查找过程的比较次数。比如二叉查找树,二分查找。而有一种查找不需要经过元素间的比较,而直接让表中数据元素的关键字与其在内存中的存储位置之间建立关系,在查找时直接由关键字获得数据元素的位置 。这就是哈希表查找。哈希查找特别适用于集合元素无明显关系的集合。哈希表哈希存储的基本思想是以关键字(key)为自变量,通过原创 2016-08-30 00:13:49 · 8573 阅读 · 2 评论 -
Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
有序链表合并题目:已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。结果链表要包含head1和head2的所有节点,即使节点值相同。 分析:此题目使用链表结构,目的是为了让答题者不增加额外的存储空间来实现,所以不能把值全拿出来排序再放回链表。而由于链表本身有序,所以可以分别比较两个链表对应的值,较小者取之,其所在的链表往后推一位(升序排),直至某链表遍历完成,将另一链表原创 2016-08-21 11:22:18 · 6502 阅读 · 0 评论 -
二分查找过程、比较次数分析、java实现
二分查找过程二分查找,也称折半查找,是对有序序列的查找算法,时间复杂度为O(log n).本文的重点是某元素二分查找的比较次数。特别要注意的是查找的上下边界问题(下面有解释)例:22 34 55 77 89 93 99 102 120 140,查找77需要查找的次数是多少?答:4次。序列: 22 34 55 77 89 93 99 102 120 140 下标:0 1 2 3原创 2016-09-12 14:26:26 · 7328 阅读 · 2 评论 -
树查找专题-二叉查找树、平衡二叉树、B+树、B-树、红黑树
查找查找表分为静态查找表和动态查找表,静态查找表是查找操作不会修改表,而查找可能会对表进行修改操作,其表结构是在查找过程中动态生成的。静态表查找静态查找主要有顺序查找、二分查找、分块查找(索引顺序查找)。动态表查找本文主要介绍动态表查找中树形结构的原理及实现。二叉排序树(Binary Sort Tree)二分查找具有较高的查找效率,平均查找时间复杂度为O(lgn),但是二分查找要求查找表有序,原创 2016-08-22 23:15:42 · 1211 阅读 · 0 评论 -
线性时间排序算法-计数排序
计数排序(Counting sort)是一种稳定的 线性时间排序算法.. 计数排序并不是基于比较的算法。 计数排序使用额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数据C来将A中元素排到正确位置。 由于用来计数的数组C的长度取决于待排序数组中的数据范围,即数组元素的最大值与最小值的差加1,这使得计数排序对于数据范围很大的数组,需要大量时间和内存。因此不合适使用排序数原创 2016-09-06 17:54:54 · 372 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
1. 哈夫曼(HUFFMAN)编码是哈夫曼树的一个应用。2. 哈夫曼树又称为最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的相对值乘上其到根结点的路径和权值。3. 图像JPG就是利用了哈夫曼编码。4. 哈夫曼树是最优二叉树,子树有左右次序之分。5. 哈夫曼树的形态不是唯一的,但是它的带权路径长度WPL是唯一的。6.原创 2016-09-21 18:30:06 · 3203 阅读 · 0 评论 -
快速排序过程、partition应用、三种快排四种优化、Java实现
快速排序过程基本思想是分治的思想,说到分治,就应该想到和递归是分不开的。有些书上会使用关键字比较的表述,有些书上会直接使用记录比较表述,这两种说法是两个维度上的说法。这里序列元素的关键字属于记录的一部分,为了简化问题,本文的讨论并不区分关键字和记录,代码实现中使用整数来表示记录。简而言之,本文的讨论简化为,对整型数组的快速排序。通过一趟排序将要排序的记录分割成两部分,一部分的关键字值比别一部分的所有原创 2016-10-05 15:32:07 · 6111 阅读 · 0 评论 -
全排列、全组合 java实现
全排列所谓全排列就是根据输入字符打印出所有字符的排列方式(分次序)。例如输入abc,所有排序的结果有,abc,cba,bac,cab,acb,bca 共6种情况。对于全排列,如果用循环的方法,需要O(n^n)的时间复杂度,其中包含大量的重复序列,需要做判断排除。显然不是一个好方法。观察abc、acb、cba三者的关系,可以看出,后两者是abc的第一位a与bc交换所得。因此我们可以得出结论全排列就是从原创 2016-10-06 14:34:47 · 7663 阅读 · 2 评论