第1个回答 2015-04-21
桶排序简介:
这个也是看桶排序的时候, 自己的第一个反应!
看CLRS上讲它的过程, 与hash表的区别是,经过hash后的数据,hash桶之间是无序的! 而桶排序是有序的,其余的过程一样
其实hash表里的hash算法演变成类似求和,并且如果结果如果不超过桶的个数,那么这就演变成了桶排序!
比如,我们要插入一个字符串集合(non-case)(这个东西在compiler的lex和symbol table部分是最常见不过的),
那么如果桶为26个,这样如果hash的时候设计成按照字符串的1st字母来分的话, a进第一个同,b进2nd,......
那么就是桶排序了,如果一个桶内存在多个(hash称之为conflict),用插入来拍,这个在很少的关键字的时候,
比用一个很复杂的hash算法要好, 因为在按照1st个字符来决定进哪个桶的时候可以直接将字符作为index进去,
至于桶里面的有序数据(链存储貌似用不了bin-search, 如果是skip-list就和bin-search的效果是一样了
第2个回答 推荐于2018-03-05
桶排序与hash表
这个也是看桶排序的时候, 自己的第一个反应!
看CLRS上讲它的过程, 与hash表的区别是,经过hash后的数据,hash桶之间是无序的! 而桶排序是有序的,其余的过程一样
其实hash表里的hash算法演变成类似求和,并且如果结果如果不超过桶的个数,那么这就演变成了桶排序!
比如,我们要插入一个字符串集合(non-case)(这个东西在compiler的lex和symbol table部分是最常见不过的),
那么如果桶为26个,这样如果hash的时候设计成按照字符串的1st字母来分的话, a进第一个同,b进2nd,......
那么就是桶排序了,如果一个桶内存在多个(hash称之为conflict),用插入来拍,这个在很少的关键字的时候,
比用一个很复杂的hash算法要好, 因为在按照1st个字符来决定进哪个桶的时候可以直接将字符作为index进去,
至于桶里面的有序数据(链存储貌似用不了bin-search, 如果是skip-list就和bin-search的效果是一样了)
以上是由刚刚hearson的那个问题所想到的...................本回答被提问者和网友采纳