美文网首页将来跳槽用
数组和链表的区别

数组和链表的区别

作者: 天蓬大元 | 来源:发表于2021-03-08 17:26 被阅读0次
什么样的“东西”可以称之为哈希表?其实就是经常想不起来却刻在 DNA 里的知识点
数据结构三要素:
1,数据的逻辑结构:逻辑结构顾名思义就是逻辑上的结构,比如我们知道一棵二叉树的非叶子节点会有左右与左右两个子树的树根相连。
2,数据的物理结构:物理结构就是数据结构真正的存储方式,二叉树我们一般通过二叉链表存取,但是也能用数组存取。这就是说一个逻辑结构可以对应不同的物理结构。
3,数据的运算:就是可有对这个数据结构进行哪些操作,比如可以对二叉树进行遍历操作,这就是一种运算。
把任意结构,任意长度的输入,快速的映射成一个固定长度的输出,这个过程就叫哈希,实现这个功能的东西就叫哈希函数。
哈希函数需要满足两个性质:
对于相同的输入,必须有相同的输出;
对于不同的输入,允许有相同的输出。

哈希表是解决查找问题的,hashcode值就是你要找的数据所在的位置(下标),那个位置的值是value

数组:数组就是一块连续的内存空间。这个空间可以放在栈上,可以放在堆上。因为知道元素的大小,再根据下标可以计算到元素在这块连续的内存中的位置。接着你就可以将你的元素保存到这块连续的内存的某个位置。这块连续的内存不可能无限的大,所以要根据实际的情况来决定数组需要多大。并且数组进行扩充的话,有可能会出现内存拷贝的现象。。因为你没办法知道你申请的那块连续的内存空间的后面的内存有没有人使用。
哈希表(HashSet):哈希表也称散列表。原理就是通过哈希函数(下面使用hash()代替)计算元素的哈希值。计算出来的哈希值是32位的。当然,我们可以把这32位的哈希值看成一个无符号的32位整形(下面使用uint32)。最后,我们再创建一个key类型的数组(假设大小为8)。这时候,假设我们要添加一个元素,我们就使用 hash(key)%8 计算出元素应该存储在数组中的位置(hash(key)%8的范围是0-7,不会使数组越界)。这时,key就与数组之间建立了一个映射关系。当然,不同的key计算(hash(key)%8)出来的结果(数组的下标)有可能是一样的。例如先前这个位置已经有元素存储了,现在又有个元素映射到这个位置,我们怎么办?这种情况我们称为哈希冲突,解决的方式有2种。 第1种为链式存储法,也就是数组的每个元素都是一个链表,来记录映射到该下标的所有元素。 第2种为二度哈希,也就是使用哈希后加上一定的计算,在当前的位置下再计算另一个位置出来。当然,无论哪种,接下来的查找都是线性的。哈希表一般都是HashSet<TKey>,可以看到只有key,一般都用于存储元素,并且可以快速的查找元素在集合中是否存在。字典(Dictionary):字典也是散列表的一种,跟上面说的哈希表唯一不同的就是。哈希表使用hash(key)%8得到数组存储位置后,它存储的是key。。而字典存储的是value,仅此区别而已。所以字典是Dictionary<TKey,TValue>。。他的作用就是可以根据key快速的查找到value。

https://zhuanlan.zhihu.com/p/78107140
https://zhuanlan.zhihu.com/p/52440208

相关文章

  • 大数据(架构师)面试系列(5)

    1.数组与链表的区别是什么? 线性表--数组和链表的区别链表和数组的区别在哪里? 2.Scala函数式编程的特点?...

  • iOS知识复习笔记(19)---数据结构和算法1

    数组和链表的区别 数组静态分配内存,链表动态分配内存 数组内存中连续,链表不连续 数组元素在栈区,链表在堆区 数组...

  • 数据结构——链表

    目录 1、属性 2、链表和数组的区别 2.1、数组概述 2.2、数组和链表优缺点 2.3、链表和数组的比较 3、单...

  • 数据结构和算法

    线性结构 数组、 单链表和双链表 数组和链表区别: 数组:数组元素在内存上连续存放,可以通过下标查找元素;插入、删...

  • 链表

    链表和数组一样也支持查找,插入,删除操作。最常见的三种链表是:单链表,双链表和循环链表。 链表和数组的区别:数组需...

  • java基础

    HashMap 数据结构 数组 ArrayList和LinkedList的区别实值数组和链表的区别 用连续的存储单...

  • 数据结构和算法

    1、数组和链表区别(1)物理存储结构不同。链表与数组在计算中存储元素采用不同的存储结构,数组是顺序存储结构,链表是...

  • 算法与数据结构:链表

    链表 链表还分为单向链表和双向链表, 但是这篇文章只说单向链表 , 下次再讲双向链表 . 链表和数组的区别 ? 链...

  • 数组及链表

    数组和链表的区别及优缺点: 数组:有n个数的数组,知道起始位置后直接就能查找到里面的元素 链表:有n个数的链表,知...

  • 链表与数组的区别

    链表和数组都可用来存放指定的数据类型。 数组和链表区别: 数组:数组元素在内存上连续存放,可以通过下标查找元素;插...

网友评论

    本文标题:数组和链表的区别

    本文链接:https://www.haomeiwen.com/subject/zqtmqltx.html