白话数据结构
文章平均质量分 90
本专栏会将清华大学严蔚敏教授的数据结构教材以一种通俗易懂的方式展示给大家,让初学者理解的更快
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
白话算法与数据结构之【字典树】
1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是原创 2015-06-25 21:11:30 · 1879 阅读 · 1 评论 -
RMQ(区间求最值)
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大原创 2014-10-25 20:08:29 · 1449 阅读 · 0 评论 -
三分查找专题
我们都知道 二分查找 适用于单调函数中逼近求解某点的值。如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点。下面的方法应该是三分查找的一个变形。原创 2014-10-04 11:55:15 · 1681 阅读 · 0 评论 -
白话算法之【动态规划入门】
动态规划入门什么是动态规划? 动态规划(Dynamic Programming,所以我们简称动态规划为DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(princip原创 2015-05-11 16:39:09 · 42948 阅读 · 24 评论 -
白话数据结构之【线段树】
线段树的入门 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线段树可以原创 2015-02-17 17:42:51 · 1638 阅读 · 0 评论 -
透析SPFA算法(图例讲解)
SPFA算法是Bellman-Ford的队列优化,所以先介绍Bellman-Ford算法。 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(R原创 2014-12-05 23:53:49 · 4355 阅读 · 1 评论 -
01背包问题吐血详解
背包问题我真是学一次忘一次,很多dp问题也是由这个衍生而来,今天终于痛下决心写个博客供自己日后参考问题描述:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路 :这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以原创 2014-10-18 13:29:20 · 93482 阅读 · 23 评论 -
白话数据结构之【树状数组】
百度百科:树状数组白话讲解原创 2014-10-06 14:40:26 · 1597 阅读 · 2 评论 -
白话数据结构之【最小生成树】
基本概念:1:什么是生成树?对于图G,如果其子图G'满足V'=V,且G'是一棵树,那么G'就是图G的一颗生成树。生成树是一棵树,按照树的定义,每个顶点都能访问到任何一个其它顶点。(离散数学中的概念),其中V是顶点,E是边,通俗来讲生成树必须包含原图中的所有节点且是连通的比如 2:最小一个无向连通图G=(V,E),最小生成树就是联结所有顶点的边的权值和最小时的子图T,此时原创 2015-01-18 19:59:50 · 1989 阅读 · 0 评论