<?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>算法&amp;数据结构 - 四号程序员</title>
	<atom:link href="https://www.coder4.com/archives/category/%e7%ae%97%e6%b3%95%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>Fri, 30 Oct 2020 14:13:54 +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>OpenCV判断图片是否模糊</title>
		<link>https://www.coder4.com/archives/7112</link>
					<comments>https://www.coder4.com/archives/7112#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Fri, 30 Oct 2020 14:13:54 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[模糊]]></category>
		<guid isPermaLink="false">https://www.coder4.com/?p=7112</guid>

					<description><![CDATA[合理用最简单的拉普拉斯算子，可以参考这篇文章：https://my.oschina.net/u/4611954/blog/4585054 # image = cv2.imread(imagePath) def variance_of_laplacian(image): gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) return cv2.Laplacian(image, cv2.CV_64F).var() # 越大越清晰[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/7112/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[转载]基于用户投票的排名算法</title>
		<link>https://www.coder4.com/archives/4065</link>
					<comments>https://www.coder4.com/archives/4065#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Fri, 13 Dec 2013 15:27:50 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[排名算法]]></category>
		<category><![CDATA[用户投票]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=4065</guid>

					<description><![CDATA[这是 阮一峰 写的系列的文章，共6篇，对于投票类的排名计算，非常有意义，由于图、公式比较多，就直接贴出原文链接了。 基于用户投票的排名算法（一）：Delicious和Hacker News 基于用户投票的排名算法（二）：Reddit 基于用户投票的排名算法（三）：Stack Overflow 基于用户投票的排名算法（四）：牛顿冷却定律 基于用户投票的排名算法（五）：威尔逊区间 基于用户投票的排名算法（六）：贝叶斯平均[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/4065/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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/3577</link>
					<comments>https://www.coder4.com/archives/3577#comments</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 19 Jul 2012 15:17:21 +0000</pubDate>
				<category><![CDATA[算法&数据结构]]></category>
		<category><![CDATA[dc3]]></category>
		<category><![CDATA[倍增]]></category>
		<category><![CDATA[后缀数组]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=3577</guid>

					<description><![CDATA[一、后缀的定义 后缀数组，做为后缀树的替代品，可以解决很多棘手的字符串处理问题。 长度为n的String[0, 1...n-1] 定义后缀Suffix(i)=sub_string[i...n-1]。 例如字符串aabaaaab，Suffix[1] = abaaaab，Suffix[7]=b。 考虑到空间问题，以及C系列语言中，Suffix[i]非常好求得（&#38;str[i]即可）。一般不会保存Suffix[i]这个数组。 二、后缀数组sa和逆运算数组ran[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3577/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>蓄水池算法</title>
		<link>https://www.coder4.com/archives/3574</link>
					<comments>https://www.coder4.com/archives/3574#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Tue, 17 Jul 2012 06:03:27 +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=3574</guid>

					<description><![CDATA[问题描述 要求从N个元素中随机的抽取k个元素，其中N无法确定(N是个流，可能无穷大)。 这种应用的场景一般是数据流的情况下，由于数据只能被读取一次，而且数据量很大，并不能全部保存，因此数据量N是无法在抽样开始时确定的；但又要保持随机性，于是有了这个问题。所以搜索网站有时候会问这样的问题。 这里的核心问题就是“随机”，怎么才能是随机的抽取元素呢？我们设想，买彩票的时候，由于所有彩票的中奖概率都是一样的，所以我们才是“随机的”买彩票。那么要使抽取数据也随机，必须使每一个数据被抽样出[......] 继续阅读]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/3574/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>
	</channel>
</rss>
