• 散列/哈希算法 冒泡排序 求最大值


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

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

     哈希碰撞的产生:

    比如说有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方法比较内容。

    哈希碰撞的解决:

    新生的小心情
  • 相关阅读:
    jdbc调用存储过程和存储函数
    jdbc测试
    JDBC -JSP
    eclipse连数据库(sql server)的注意事项
    九大内置对象(新)
    application 全局对象
    编码:session
    建库和建表
    db vs dbm
    Source Insight异常退出,错误代码C0000005
  • 原文地址:https://www.cnblogs.com/jianmianruxin/p/7233031.html
Copyright © 2020-2023  润新知