zoukankan      html  css  js  c++  java
  • 散列/哈希算法 冒泡排序 求最大值

    散列算法/函数:散列函数使得不同长度的输入消息,产生固定精简长度的输出,这个固定长度的输出称为原输入消息的散列或消息摘要。

    不可逆性:由于散列值/哈希值是源数据的信息摘要,而不是压缩,因此无法通过哈希值/散列值找到源数据。

     哈希碰撞的产生:

    比如说有5个数 12,25,30,45,50,这几个数有个规律,就是十位数都不相同,如果我设置一个散列函数f(value)=value/10;平常的时候,我们查找50,要比较5次(其他算法可能不同),这里用散列算法只需要1次,就是解散列函数,key=50/10=5,要找的数就在第5个位子.
    但是上面问题还是很多的,比如说查找55呢?就会出错<因为55解散列函数之后,也是在第5个位子>,还有等等等问题,很显然这个是我散列函数没设置好,当你把散列函数设置好了后,由于数据的庞大,冲突很有可能产生,那么就需要我们来处理冲突了,所以写散列算法就是设置好的散列函数和处理冲突的过程.这里散列算法涉及的查找就跟查找的数量无关,跟冲突率有直接的关系。

    java里的哈希表和hashcode:public int hashCode()返回该对象的哈希码值

    hashcode:jdk会给每个对象的地址计算出一个hashcode,再将关键字映射到hashcode,这样的话查找元素时直接根据关键字来找到地址对应的hashcode

    我们知道有哈希碰撞存在的可能,那么两个对象的地址经过哈希算法可能对应着相同的hashcode,所以哈希表的唯一性除了先用hashcode比较外还需用equals方法比较内容。

    哈希碰撞的解决:

    新生的小心情
  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/jianmianruxin/p/7233031.html
Copyright © 2011-2022 走看看