Python数据结构与算法中的散列是什么

技术Python数据结构与算法中的散列是什么本篇内容主要讲解“Python数据结构与算法中的散列是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python数据结构与算法

本文主要讲解“什么是Python数据结构和算法中的hash”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“什么是Python中的哈希数据结构和算法”!

哈希

对于一组数据项,顺序搜索的时间复杂度为O(n),二分搜索法为O(logn),而对于散列数据结构,搜索算法的时间复杂度降低到O(1).

00-1010哈希表

哈希表又称“散列表”,是一种数据集,其中数据项以有利于快速搜索操作的方式存储。

哈希表中用于存储数据项的每个存储位置都添加为“http://”,每个槽对应一个槽(slot.

python中对应的数据结构是字典。

{'a' :1,' b' 33602,' c' :3}

哈希函数

哈希函数:实现数据项到存储槽名的转换。

常用的哈希函数是“唯一的名字”:将数据项除以哈希表的大小,余数作为槽名。

为什么求余数更常见?因为哈希函数返回的槽号必须在哈希表的范围内,所以哈希表的大小一般是互补的。

当所有数据项都保存在哈希表中时,可以通过槽号直接查询搜索,算法时间复杂度O(1)

冲突

哈希函数计算槽时,不同的数据项应该计算不同的槽,但有时不同的数据项计算相同的槽(即冲突)。

比如大小为11的哈希表,哈希函数“余数”,77和44计算的槽位都是0!发生了冲突。

对于散列表,讨论的主要话题是求余数.

00-1010完美散列函数

解决冲突:给定一组数据项,完美的散列函数可以将每个数据项映射到不同的槽。

对于一组固定的数据,我们总能找到设计一个近乎完美的散列函数的方法。

完美散列函数

冲突较少(每个数据项的槽位置不同)

计算难度低(计算槽位的过程更容易)

完全分散数据项(节省空间)

00-1010哈希技术的应用

哈希技术不仅在哈希表中安排数据项的存储位置,而且在信息处理的许多领域都有许多应用。

因为哈希函数可以对任何不同的数据产生不同的哈希值,如果将哈希值视为数据的“好的散列函数具备的特征:”,这个特性在标志.可以广泛使用

因为哈希值通常是一对一且唯一的,所以它可以用作某个数据项的符号。

数据一致性校验:

任何长度的作为一致性校验额数据“标志”,散列函数需要具备以下特征:数据,哈希函数计算出的哈希值都是压缩性:的固定长度很容易从原始数据中计算出哈希值(“flag”),注意原始数据的容易计算不能从“flag”中反推出:原始数据的微小变化会导致“flag”(哈希值)发生很大变化。抗修改性:给定原始数据和对应的哈希值(“标志”),很难再次找到相同的哈希值(即唯一性!)

近乎完美的功能:MD5/SHA

抗冲突性:将任何长度的数据转换成MD5(Message Digset)的“符号”(16字节)。

18已经是一个巨大的数字了。

空间了,据说地球的沙子的数量就是这么多

SHA(Secure Hash Algorithm)

  • SHA-0/SHA-1:输出散列值160位(20字节)

  • SHA-256/SHA-224:分别输出256位和224位

  • SHA-512/SHA-384:分别输出512位和384位

Python的散列函数库:hashlib

Python自带了MD5和SHA系列的散列函数:hashlib

包含了:md5、sha1、sha224、sha256、sha384、sha512

Python数据结构与算法中的散列是什么

计算结果:

d26a53750bc40b38b65a520292f69306

数据一致性检验中的应用

1. 数据文件是否是一致的

为每个文件计算其散列值,通过比对散列值即可得知是否文件内容相同

2. 用于网络文件下载完整性校验

下载时会提供文件的散列值,下载过程中不断比对散列值,看是否下载出错

3. 用于文件分享系统(例如:百度网盘)

服务器中都存储了文件的散列值,相同文件无需存储多次

4. 加密形式保存密码(常用)

在注册账户密码时,服务器往往存储的是密码对应的散列值,用户登录输入密码时,通过散列值比对验证
到此,相信大家对“Python数据结构与算法中的散列是什么”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123899.html

(0)

相关推荐

  • hou不住的hou怎么写,喜欢上吼不住的女人,该怎么办

    技术hou不住的hou怎么写,喜欢上吼不住的女人,该怎么办想要生气的时候忍一下hou不住的hou怎么写,过一下下你就会发觉,其实你不像刚开始的时候那么生气了。。生气的时候想一想,生气能不能解决了事情,而且生气带给自己的负

    生活 2021年10月24日
  • 大数据storm框架搭建和原理(大数据开发一般用什么软件)

    技术基于Storm的怎么实现大数据平台本篇内容主要讲解“基于Storm的怎么实现大数据平台”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Storm的怎么实现大数据平台”吧

    攻略 2021年12月23日
  • MYSQL中基础知识有哪些

    技术MYSQL中基础知识有哪些这篇文章主要介绍了MYSQL中基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基础概念与基础命令1)基础概念

    攻略 2021年10月31日
  • 小字加偏旁,“少”字可以加什么偏旁

    技术小字加偏旁,“少”字可以加什么偏旁一小字加偏旁、加禾字旁,秒。miǎo 
    1、谷物种子壳上的芒,引申为细微,微小:~忽(喻细微)。 
    2、时间的计算单位,一分钟的六十分之一:~表。~针。 
    3、弧和角的计算单位

    生活 2021年10月30日
  • 京东自动抢茅台脚本 Python

    技术京东自动抢茅台脚本 Python 京东自动抢茅台脚本 Python这期为大家继续分享个GitHub上面的大神开源的项目,大家可以认真看看,然后把对自己刚兴趣的收藏下来!正文开始
    开始本文前,先问大家

    礼包 2021年11月5日
  • 奔怎么组词,“奔”字的多音字怎么组词

    技术奔怎么组词,“奔”字的多音字怎么组词奔拼音:【bēn/bèn】其中奔【bèn】的意思和相关组词如下:奔【 bèn】1、直向目的地走去:投奔。直奔工地。他顺着小道直奔那山头。奔向小康。投奔【tóubèn】指前往依靠别人

    生活 2021年10月21日