<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>数据结构 - 四号程序员</title>
	<atom:link href="https://www.coder4.com/archives/tag/%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84/feed" rel="self" type="application/rss+xml" />
	<link>https://www.coder4.com</link>
	<description>Keep It Simple and Stupid</description>
	<lastBuildDate>Tue, 31 Jul 2012 15:46:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>数据结构重读 - 哈希表</title>
		<link>https://www.coder4.com/archives/3590</link>
					<comments>https://www.coder4.com/archives/3590#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Tue, 31 Jul 2012 15:18:45 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[哈希表]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3590</guid>

					<description><![CDATA[无论是折半查找、二叉排序树查找还是B树，性能都依赖于查找中的比较次数。 一种理想情况是不经过任何比较，一次直接定位索要查找的记录，即：若数据结构中存在关键字和K相等，则其必定在f(K)的存储位置上，我们称这个对应关系f为哈希函数。 冲突(Collision)：对不同的关键字，可能得到同一哈希地址，即存在key1!=key2，但f(key1)=f(key2)。此时称为冲突或碰撞。 由于在实际应用中，哈希函数都是压缩函数，所以冲突只能尽可能的减少，很难完全避免。 哈希表：根据[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3590/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 键树、字典树</title>
		<link>https://www.coder4.com/archives/3562</link>
					<comments>https://www.coder4.com/archives/3562#comments</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 12 Jul 2012 14:42:43 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[字典树]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<category><![CDATA[键树]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3562</guid>

					<description><![CDATA[键树，又称数字查找树(Digital Search Trees)是一棵度&#62;=2的树，每个结点只含有组成关键字的符号。 键树有两种存储结构： 1、树的孩子-兄弟链表来表示键树。 每个Node有三个域：first指向第一棵子树的根指针；next指向右兄弟；info（可选的）记录附加数据。如下图： 查找过程是，从根结点出发，顺着first查找，如果相等，继续下一个first。否则沿着next查找。直到到了空指针为止。此时若仍未完成key的匹配，查找不成功。[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3562/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - B树、B-树、B+树、B*树</title>
		<link>https://www.coder4.com/archives/3548</link>
					<comments>https://www.coder4.com/archives/3548#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Sat, 07 Jul 2012 12:23:24 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[B-树]]></category>
		<category><![CDATA[B树]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3548</guid>

					<description><![CDATA[本文是转载的，《B树、B-树、B+树、B*树》 B树 即二叉搜索树： 1.所有非叶子结点至多拥有两个儿子（Left和Right）； 2.所有结点存储一个关键字； 3.非叶子结点的左指针指向小于其关键字的子树，右指针指向大于其关键字的子树； 如： B树的搜索，从根结点开始，如果查询的关键字与结点的关键字相等，那么就命中； 否则，如果查询关键字比结点关键字小，就进入左儿子；如果比结点关键字大，就进入右儿子；如果左儿子或右儿子的指针为空，则报告找不到相应的关键字[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3548/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 平衡二叉树(AVL树)</title>
		<link>https://www.coder4.com/archives/3523</link>
					<comments>https://www.coder4.com/archives/3523#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 05 Jul 2012 14:57:44 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[AVL树]]></category>
		<category><![CDATA[平衡二叉树]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3523</guid>

					<description><![CDATA[大二那会根本没蹋下心来看，觉得天书一般，连旋转都没搞明白。 今天仔细看了书，发现真的一点不难啊，鄙视自己…… 首先是概念： 平衡二叉树是为了解决前面二叉排序树不均衡的问题，而加入了一种平衡机制。所以，平衡二叉树是一种特殊的二叉排序树(BST)！ AVL树查找的平均和最差复杂度都是O(logn) ！！！(BST的最坏是O(n)) AVL树的插入复杂度是O(logn)。 平衡二叉树（简称AVL树）：对任意一个结点，它的左子树和又子树都是平衡二叉树（左子树都小于结点[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3523/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 二叉排序树(BST)</title>
		<link>https://www.coder4.com/archives/3535</link>
					<comments>https://www.coder4.com/archives/3535#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 05 Jul 2012 13:27:55 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[BST]]></category>
		<category><![CDATA[二叉排序树]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3535</guid>

					<description><![CDATA[1、前面讨论了静态查找表，它们的特点是，数据是一次性就给好了。 2、而对于动态查找表，数据可以是在查找过程中动态添加、生成的。其实这概念不太严谨。 3、二叉排序树(BST)：左子树上所有结点的值均小于根结点的值；右子树上所有结点的值均大于根结点上的值。 4、二叉排序树的查找过程： (1)若树为空，直接返回/跳出。 (2)树非空，则 (a)若key==root.data，return true。 (b)若key&#60;root.data, root = root.left[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3535/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 顺序和二分查找、最/次优查找树、索引顺序表查找</title>
		<link>https://www.coder4.com/archives/3519</link>
					<comments>https://www.coder4.com/archives/3519#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Sun, 01 Jul 2012 14:28:21 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[二分查找]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[最优查找树]]></category>
		<category><![CDATA[次优查找树]]></category>
		<category><![CDATA[索引顺序表查找]]></category>
		<category><![CDATA[重读]]></category>
		<category><![CDATA[顺序查找]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3519</guid>

					<description><![CDATA[概念明天补上。。。 顺序查找，用了哨兵，减少检查数组长度的次数，据说这样可以让顺序查找的性能提升一倍。 优点：无序任何假设条件（如数组有序等）。 缺点：效率低。 #include &#60;stdio.h&#62; int ssearch(int* arr, int n, int key) { int i = 0; arr[n] = key; for(i=0;arr[i]!=key;i++); if(i==n) {[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3519/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 所有点对最短路径(Floyd算法)</title>
		<link>https://www.coder4.com/archives/3512</link>
					<comments>https://www.coder4.com/archives/3512#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 28 Jun 2012 16:12:57 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[Floyd]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[最短路径]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3512</guid>

					<description><![CDATA[如果我们要求每一顶点对之间的最短路径，怎么做呢？ 方法1：对N个顶点，依次执行前面的Prim算法。 方法2：使用Floyd算法。 实际上，Floyd算法是动态规划(DP)算法。 原理很简单，我们假设dp[i][j]表示从顶点i到顶点j的最短路径，则dp[i][j] = min (dp[i][k]+dp[k][j], 0&#60;=k&#60;=nvexs)。 于是算法如下： import java.util.LinkedList; public class Fl[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3512/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 单源最短路径(Dijkstra)</title>
		<link>https://www.coder4.com/archives/3506</link>
					<comments>https://www.coder4.com/archives/3506#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Tue, 26 Jun 2012 08:24:08 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[Dijkstra]]></category>
		<category><![CDATA[单源]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[最短路径]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3506</guid>

					<description><![CDATA[单源最短路径：给定带权有向图和源点v，求从v到G中其余各点的最短路径。 Dijkstra算法非常类似于最小生成树算法(的Prim)。 算法： 0、假设源为v0，设置辅助变量dist和pre，优先队列pq，按照dist[x]从小到达排序（小顶堆）。 1、如果v0-&#62;i连通，初始化dist[i]为w[v0][i]。放(dist[i], i)入pq。 2、循环，直到pq为空。 2.1、取出pq中最小的，设其下标为x， 2.2、遍历图matrix[x][i[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3506/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - AOV网和关键路径</title>
		<link>https://www.coder4.com/archives/3492</link>
					<comments>https://www.coder4.com/archives/3492#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 12:18:10 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[AOV网]]></category>
		<category><![CDATA[关键路径]]></category>
		<category><![CDATA[拓扑排序]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3492</guid>

					<description><![CDATA[与AOV网对应的，还有一个AOE网，当然它也是有DAG(向无环图)。 AOE(Activity On Edge)网：顾名思义，用边表示活动的网。 与AOV不同，活动都表示在了边上，如下图所示： 如上所示，共有11项活动（11条边），9个事件（9个顶点）。 整个工程只有一个开始点和一个完成点。 即只有一个入度为零的点（源点）和只有一个出度为零的点（汇点）。 (1) 关键路径：是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间。 (2[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3492/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>数据结构重读 - 有向无环图、AOV网和拓扑排序</title>
		<link>https://www.coder4.com/archives/3471</link>
					<comments>https://www.coder4.com/archives/3471#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Wed, 20 Jun 2012 16:07:55 +0000</pubDate>
				<category><![CDATA[笔面题]]></category>
		<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[拓扑排序]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[重读]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3471</guid>

					<description><![CDATA[DAG和概念 有向无环图：顾名思义，有向图，且不含环，directed acycline graph，简称DAG图。 无向图检查环：若深度优先遍历过程遇到回边（先前访问过的顶点的边），则必定存在环。 有向图检查环：从某个顶点v出发，在dfs(v)结束前，出现一条从顶点u到顶点v的回边，由于u在生成树上是v的子孙，则有向图必定存在包含顶点v和u之间的环。 DAG图是描述工程的有效工具。一个工程可以用一个DAG图表示，每一个顶点是一个子工程，工程的先后关系用弧表示。 围绕着[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3471/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
