??xml version="1.0" encoding="utf-8" standalone="yes"?>黄色电影免费在线看,亚洲福利一区,日韩一区二区三区在线看http://www.aygfsteel.com/flysky19/category/20413.htmljava之\zh-cnThu, 08 Mar 2007 17:27:02 GMTThu, 08 Mar 2007 17:27:02 GMT60- hash函数学习ȝQ以及与hashcode()、hashMap的关p?/title>http://www.aygfsteel.com/flysky19/articles/102289.html不断前进的小乌龟不断前进的小乌龟Tue, 06 Mar 2007 17:26:00 GMThttp://www.aygfsteel.com/flysky19/articles/102289.htmlhttp://www.aygfsteel.com/flysky19/comments/102289.htmlhttp://www.aygfsteel.com/flysky19/articles/102289.html#Feedback0http://www.aygfsteel.com/flysky19/comments/commentRss/102289.htmlhttp://www.aygfsteel.com/flysky19/services/trackbacks/102289.html以前一直觉得hash函数很深奥,上王珊的《数据库实现原理》的时候,g明白了一点点Q但是到学java
的时候,频繁接触到hashcode()QhashMapq些Q就d惌三者之间有关系吗?hash函数是什么?hashcode()Q?br />hashMap和hash函数又有什么关pdQ?br />
今天l于对这个问题有了初步的学习和理解:
1.什么是hash函数Q?br />1Q来自:http://beyond911.bokee.com/1047973.html
什么是HASH函数(l典例子)
让我们先来了解一些基本知识,作作预热只有q样才能更好的了解hash?br />
HashQ一般翻译做"散列"Q也有直接音译ؓ"哈希"的,是把Q意长度的输入Q又叫做预映, pre-imageQ,通过散列法Q变换成固定长度的输出,该输出就是散列倹{这U{换是一U压~映,也就是,散列值的I间通常q小于输入的I间Q不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入倹{?br />
单的说就是一U将L长度的消息压~到某一固定长度的消息摘要的函数?br />
HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂q128位的~码?叫做HASH? 也可以说Qhash是扑ֈ一U数据内容和数据存放地址之间的映关p?br />
2Q来自:http://www.hour41.com/blog/hour41/entry/200701255
计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数Q是一个复杂的定义Q大家可以去看计理论或者密码学斚w的数据。用“hcZ的语言描述单向函数是Q如果某个函数在l定输入的时候,很容易计出其结果来Q而当l定l果的时候,很难计算入来Q这是单项函数。各U加密函数都可以被认为是单向函数的D。Hash函数Q或者成为散列函敎ͼ也可以看成是单向函数的一个D。即它接q于满单向函数的定义?br />
Hash函数q有另外的含义。实际中的Hash函数是指把一个大范围映射C个小范围。把大范围映到一个小范围的目的往往是ؓ了节省空_使得数据Ҏ保存。除此以外,Hash函数往往应用于查找上。所以,在考虑使用Hash函数之前Q需要明白它的几个限Ӟ
1. Hash的主要原理就是把大范围映到范_所以,你输入的实际值的个数必须和小范围相当或者比它更。不然冲H就会很多?br />2. ׃HashD单向函数Q所以,你可以用它来Ҏ据进行加密?br />3. 不同的应用对Hash函数有着不同的要求;比如Q用于加密的Hash函数主要考虑它和单项函数的差距,而用于查扄Hash函数主要考虑它映到范围的冲突率?br />
3Q自qȝQ?br /> aQhash函数是把Q意长度的输入Q又叫做预映, pre-imageQ,通过散列法Q变换成固定长度的输出,该输出就是散列倹{这U{换是一U压~映,也就是,散列值的I间通常q小于输入的I间Q不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入倹{?br />例如Q散列算法ؓ求余的hash函数?br /> bQ实际中的Hash函数是指把一个大范围映射C个小范围。把大范围映到一个小范围的目的往往是ؓ了节省空_使得数据Ҏ保存?br /> cQ在数据l构中,hash是扑ֈ一U数据内容和数据存放地址之间的映关p,比如Q?1?0求余后得1Q就?1存放到第一个桶里(或者是W一块内存单元中Q,x数据和存攑֜址建立映射关系Q?br /> dQ所以,有了数据内容和数据存攑֜址之间的映关p,Hash函数往往应用于查找上。不q,利用hash函数的查找跟以前自己理解的不同,以前自己以ؓ是通过hash函数p立即扑ֈ存储地址Q就像HashMap中根据key立即能找到value一P其实不是q样的,hash函数只不q是Ҏ散列法和解军_H的Ҏ来提供一U定位和查找的方式,hashmap中根据可以马上找到value值是理所当然的,但是Ҏhash函数扑ֈkey值就不是立即的了。当ӞZ方便查找Q尽量得hash函数无冲H,可以唯一定地址是最理想的。娃哈哈Q终于弄清楚q一点了Q?br /> eQHash函数是指把一个大范围映射C个小范围Q所以hash函数是求余之cȝ压羃函数Q(比如Q?1Q?3的范围压~ؓ1Q?Q,而不?0xQ?q样的扩散函敎ͼQ比如,11Q?3的范围扩散ؓ117Q?37Q;
fQ由于HashD单向函数Q所以,你可以用它来Ҏ据进行加密?br /> gQ不同的应用对Hash函数有着不同的要求;比如Q用于加密的Hash函数主要考虑它和单项函数的差距,而用于查扄Hash函数主要考虑它映到范围的冲突率?br />
2.散列表相关知识的pȝ学习Q?br />数据l构自考网Qhttp://student.zjzk.cn/course_ware/data_structure/web/chazhao/chazhao9.4.1.htm
3. JDK中HashMap的分?br />1Q来自:http://chinakite.javaeye.com/blog/25073
2Q请问hashtablec里面的hash函数是怎么LQ?br />来自Qhttp://topic.csdn.net/t/20020311/09/567386.html
他是调用每个c自己本w的hashCode的方法来定的?
public synchronized Object put(Object key, Object value) {
...
int hash = key.hashCode();//是q里了?
int index = (hash & 0x7FFFFFFF) % tab.length;
...
}
详细Ljava的源文g
String的散列值是由内容{换来的,Objectcȝ却省散列函数q回对象地址转换来的散列倹{?br />
4.面试题:
来自Qhttp://www.javaref.cn/topics/Question/10566.html
问题Q?br />
a)请问哈希?(hashtable) 是如何存储数据的 Q?br />
{案Q?Hashtable 是用来存?key ?value 对的数据l构 , Ҏ讑֮?hash 函数 H(key) 和处理冲H的Ҏ一l关键字Q?key Q映象到一个有限的q箋的地址集(区间Q上Qƈ以关键字在地址集中的“象”作录在表中存储位置Q这U表便成?hashtable.
b)是否两个键值通过 hash 函数产生的映地址会一P怎么办?
{案 : 是,一般情况下Q完全避免冲H是很难的。因为通常关键字集合会比目标地址I间大。哈希函数要量避免冲突Q避免不同的关键字生相同的 hash |Q一l关键字的哈西地址可能的均匀分布在整个地址区间。所以有一些冲H处理方法:开攑֮址法,再哈希法Q链地址法(用链表保存冲H的|Q公共溢出区。?
关于哈希表,有个与实际编E更密切的问题可以一问:Z证逻辑上的正确性,哈希表对可以作ؓ键值的cd有什么要求? C++Q除容器对元素类型的标准需求外Q还需overload == ?< JavaQ需override equals(逻辑上的正确?和hashCode(性能) C#Q需override Equals(逻辑上的正确?和HashCode(性能)

]]> - 快速排序学习ȝhttp://www.aygfsteel.com/flysky19/articles/102285.html不断前进的小乌龟不断前进的小乌龟Tue, 06 Mar 2007 16:28:00 GMThttp://www.aygfsteel.com/flysky19/articles/102285.htmlhttp://www.aygfsteel.com/flysky19/comments/102285.htmlhttp://www.aygfsteel.com/flysky19/articles/102285.html#Feedback0http://www.aygfsteel.com/flysky19/comments/commentRss/102285.htmlhttp://www.aygfsteel.com/flysky19/services/trackbacks/102285.html
昨天׃一天的旉学习ȝ冒排序Q今天下军_把数据结构的相关内容Q各U排序,树,
查找法{都大概学习了一遍,把时间复杂度和空间复杂度{概느清了Q终于有了一点点
的踏实感Q因己没考研Q本U基也没打牢QL觉自pM一个h都有一大段的差距,
q写E序和找实习工作都觉得自己很没信心,~少底气Q因Z些研I生里面大家都会的基
知识我丝毫不懂,真是太打击自׃Q!
自己的近期安排:
今天ȝ了快速排序,hash函数{知识之后,明天开始就要踏t实实的看Y件测试的论文了!Q?br />在看论文的同Ӟ如果想练l手Q最好坚持把上学期的“决{树”的作业实现了,q样自己
有信心面对一切了Q!
另外Q好好上李老师数据挖掘的课Q千万不要迟刎ͼ最??0分就要去到新信息|好好学习Q?br />d书馆借几本好书,提前学习和准备!
q有Q明天别忘了问问解婷婷和杨惠她们的英文论文都是从哪下的?怎么搜烦Q比如,Proges的用?
怎么知道哪些英文论文比较好?
好了Q现在言规正传,学习快速排序:
快速排序和冒排序都是交换排序cdQ快排的法思想是:
每次选一个基准|比如W一个数Q,让小于这个基准值的数向左移Q大于这个基准值的数向右移Q?br />一移动之后,q个基准值就定位到合适的位置了,它的左边的数比它,双的数比它大;一可?br />定位一个数Q左边和双分别递归Qn-1后所有数都定位到合适位|了Q?br />
法分析
快速排序的旉主要耗费在划分操作上Q对长度为k的区间进行划分,共需k-1ơ关键字的比较?br />
Q?Q最坏时间复杂度
最坏情冉|每次划分选取的基准都是当前无序区中关键字最?或最?的记录,划分的结果是基准左边的子区间为空(或右边的子区间ؓI?Q而划分所得的另一个非I的子区间中记录数目Q仅仅比划分前的无序Z记录个数减少一个?br /> 因此Q快速排序必dn-1ơ划分,Wiơ划分开始时区间长度为n-i+1Q所需的比较次Cؓn-i(1≤i≤n-1)Q故ȝ比较ơ数辑ֈ最大|
Cmax = n(n-1)/2=O(n2)
如果按上面给出的划分法Q每ơ取当前无序区的W?个记录ؓ基准Q那么当文g的记录已按递增?或递减?排列Ӟ每次划分所取的基准是当前无序Z关键字最?或最?的记录,则快速排序所需的比较次数反而最多?br />
Q?Q?最好时间复杂度
在最好情况下Q每ơ划分所取的基准都是当前无序区的"中?记录Q划分的l果是基准的左、右两个无序子区间的长度大致相等。ȝ关键字比较次敎ͼ
0(nlgn)
注意Q?br /> 用递归树来分析最好情况下的比较次数更单。因为每ơ划分后左、右子区间长度大致相{,故递归树的高度为O(lgn)Q而递归树每一层上各结Ҏ对应的划分过E中所需要的关键字比较次数d不超qnQ故整个排序q程所需要的关键字比较L数C(n)=O(nlgn)?br /> 因ؓ快速排序的记录Udơ数不大于比较的ơ数Q所以快速排序的最坏时间复杂度应ؓ0(n2)Q最好时间复杂度为O(nlgn)?br />
具体的算法描q、代码实现、算法分析和动画演示参见Q?br />数据l构自考网
http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.3.2.4.htm
附排序的面试题:
来自Qhttp://www.javaref.cn/topics/Question/10566.html
问题Q?
a)冒 (bubble sort) 和快速排?(quick sort) 的区别?它们的时间复杂度Q?br />
冒Q每排序将最大值安|到最后一个位|上Q时间复杂度?O(n qx ).
快速排序法是对h排序法的一U改q,
基本思想是通过一排序将待排序纪录分割成独立的两部分Q其中一部分U录的关键字
均比另一部分U录的关键字,则可以分别对q两部分U录l箋q行排序Q以辑ֈ整个序列有序?br />旉复杂度ؓ O(NlogN).
疑问Q快排的最坏时间复杂度是O(n qx )Q最好时间复杂度到底?O(Nlog2N)Q还?O(NlgN)Q?
按照“数据结构自考网”的分析应该是O(Nlog2N)Q但是《数据结构》书?77上的分析Q似乎O(Nlog2N)
和O(NlgN)都是合理的,到底是什么呢Q明天问问解婷婷吧?br />
b)在什么情况下快速排序的效果最差? {案Q输入数据逆序排列时效果最差,蜕化成冒泡 ?

]]> - 冒排序学习ȝhttp://www.aygfsteel.com/flysky19/articles/102043.html不断前进的小乌龟不断前进的小乌龟Mon, 05 Mar 2007 17:58:00 GMThttp://www.aygfsteel.com/flysky19/articles/102043.htmlhttp://www.aygfsteel.com/flysky19/comments/102043.htmlhttp://www.aygfsteel.com/flysky19/articles/102043.html#Feedback0http://www.aygfsteel.com/flysky19/comments/commentRss/102043.htmlhttp://www.aygfsteel.com/flysky19/services/trackbacks/102043.html阅读全文

]]>
վ֩ģ壺
|
|
|
|
ƾ|
Զ|
|
|
|
|
ij|
|
|
|
ߺ|
|
Ͻ|
|
̨|
ҽ|
ɽ|
|
ػ|
|
֦|
ˮ|
|
ƽ|
|
Ͻ|
Ľ|
֦|
°|
Ǽ|
|
֣|
ɽ|
|
|
|
|