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

    哈希碰撞的解决:

    新生的小心情
  • 相关阅读:
    网络安装Centos的方法
    命令源码文件——Golang
    mosquitto: error while loading shared libraries: libwebsockets.so.12: cannot open shared object file
    centos7安装mysql初始化报错
    MQTT --- 操作行为
    MQTTv5.0 ---AUTH – 认证交换
    MQTT v5.0------SUBSCRIBE 报文
    MQTT --- Retained Message
    inux centos7下源码 tar安装5.7.26详解
    20. 有效的括号
  • 原文地址:https://www.cnblogs.com/jianmianruxin/p/7233031.html
Copyright © 2011-2022 走看看