Data structure and algorithm
文章平均质量分 78
lanhaics
学习才能进步,成功需要走好每个阶梯;
展开
-
阿里巴巴面试题汇总
(以下每题2分) 1、假设一个主机IP地址为192.168.5.121,而子网255.255.255.248,那么该主机的网络部分(包括子网号部分)为_____. 2、64位系统上,定义的变量int *a[2][3]占据___字节。 A、4 B、12 C、24 D、48 3、Linux中使用df -h/home和du -sh/home所查看到的已使用的原创 2014-04-02 20:16:16 · 1976 阅读 · 0 评论 -
平衡二叉树之AVL树的学习
平衡二叉树(这里就不解释了):给予不同的平衡条件,造就出不同的效率表现,以及不同的实现复杂度,AVL ,RB, AA都是一种平衡二叉树,因为维护平衡,所以插入和删除节点的平均时间长了,但是可以避免不平衡的情况,所以元素的搜寻访问时间短了!而最直观的平衡条件是整棵树的深度为logN,也就是说要求每个节点的左右子树有相同的高度(递归定义的结果就是该树的叶子节点都在同一层上!) 接下来是AVL转载 2014-05-13 09:37:21 · 625 阅读 · 0 评论 -
AVL树的旋转
转载:http://blog.csdn.net/gabriel1026/article/details/6311339 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共有四种情形,注意所有旋转情况都是转载 2014-05-13 09:01:52 · 847 阅读 · 0 评论 -
8种排序的简单总结
总有人说排序很难,但是我总觉得很简单,我们只需要了解基本思想就好了,通过简单的例子来加深理解。 1、直接插入排序 (1)简介:直接插入排序,从字面意思可以看出,直接插入数据完成排序。 (2)基本思想:在插入第i个数时,假设前i-1数已经排好序了,只需要将第i个数插入到i-1中,使得这i个数也是顺序的。 (3)例如:转载 2014-05-12 14:08:24 · 723 阅读 · 0 评论 -
红黑树
介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。 红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,转载 2014-05-12 13:26:34 · 593 阅读 · 0 评论 -
详解十一种排序算法
排序算法在算法中占着很重要的地位,很多算法的实现都是基于排序算法的(如搜索算法和合并算法)。所以排序算法也是笔试面试中必考内容。但是不管他怎么考,也就是那几种算法,一般不会超出我接下来要讲的这11种,所以只要认真的掌握着11中就足够了。 那么是哪11种呢,下面是wiki上总结的11种 1 Simple sorts 1.1 Insertion sort(插入排序)1.2 Selec转载 2014-04-11 09:40:58 · 1220 阅读 · 0 评论 -
KMP算法的前缀next数组最通俗的解释
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况转载 2014-05-12 09:49:23 · 945 阅读 · 0 评论 -
二叉树--java实现
package org.tree; import java.util.LinkedList; import java.util.List; /** * 二叉树 构建 遍历 * @author 我的账号 * */ public class BinaryTreeTraverse { private int[] array = {1,2,3,4,5,6,7,8,9}; private st原创 2014-05-12 11:36:13 · 759 阅读 · 0 评论 -
AVL树(平衡二叉树)
1 .基本概念 AVL树的复杂程度真是比二叉搜索树高了整整一个数量级——它的原理并不难弄懂,但要把它用代码实现出来还真的有点费脑筋。下面我们来看看: 1.1 AVL树是什么? AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是: 1. 本身首先是一棵二叉搜索树。 2. 带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1转载 2014-05-12 14:15:24 · 841 阅读 · 0 评论 -
KMP字符串模式匹配详解
KMP字符串模式匹配详解 KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一.简单匹配算法 先来看一个简单匹配算法的函数: [cpp] view plaincopy int Index_BF ( char S [ ], char转载 2014-05-09 15:06:36 · 735 阅读 · 0 评论 -
Trie树--字典树
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 字典树与字典很相似,当你要查一个单词是不是在字典树中,首先看单词的第一个字母是不是在字典的第一层,如果不在转载 2014-05-13 11:02:27 · 1466 阅读 · 0 评论