<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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>中文Flex例子 &#187; 哈希</title>
	<atom:link href="http://blog.minidx.com/tag/%e5%93%88%e5%b8%8c/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.minidx.com</link>
	<description>中文Adobe Flex例子,Flex实例教程,RIA资源,全文检索技术,算法和数据结构</description>
	<lastBuildDate>Thu, 31 Mar 2011 03:22:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>几种经典的Hash算法的实现(源代码)</title>
		<link>http://blog.minidx.com/2008/01/27/446.html</link>
		<comments>http://blog.minidx.com/2008/01/27/446.html#comments</comments>
		<pubDate>Sun, 27 Jan 2008 13:00:27 +0000</pubDate>
		<dc:creator>Minidxer</dc:creator>
				<category><![CDATA[数据结构和算法]]></category>
		<category><![CDATA[Hash]]></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://blog.minidx.com/2008/01/27/446.html</guid>
		<description><![CDATA[ 哈希算法将任意长度的二进制值映射为固定长度的较小二进制值，这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母，随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入，在计算上是不可能的，所以数据的哈希值可以检验数据的完整性。








链表查找的时间效率为O(N)，二分法为log2N，B+ Tree为log2N，但Hash链表查找的时间效率为O(1)。
设计高效算法往往需要使用Hash链表，常数级的查找速度是任何别的算法无法比拟的，Hash链表的构造和冲突的不同实现方法对效率当然有一定的影响，然 而Hash函数是Hash链表最核心的部分，下面是几款经典软件中使用到的字符串Hash函数实现，通过阅读这些代码，我们可以在Hash算法的执行效率、离散性、空间利用率等方面有比较深刻的了解。
下面分别介绍几个经典软件中出现的字符串Hash函数。
●PHP中出现的字符串Hash函数
static unsigned long hashpjw(char *arKey, unsigned int nKeyLength)
{
unsigned long h = 0, g;
char *arEnd=arKey+nKeyLength; 

while (arKey &#60; arEnd) {
h = (h &#60;&#60; 4) + *arKey++;
if ((g = (h &#38; 0xF0000000))) {
h = h ^ (g &#62;&#62; 24);
h = h ^ g;
}
}
return h;
}
.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier [...]]]></description>
		<wfw:commentRss>http://blog.minidx.com/2008/01/27/446.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 2/10 queries in 0.005 seconds using disk
Object Caching 162/329 objects using disk

Served from: blog.minidx.com @ 2012-02-10 01:00:17 -->
