数组、链表、哈希表的增删查改效率

数组、链表、哈希表的增删查改效率

一共进行了4次测试:数据如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

由图可知,

  • 哈希表
    的平均创建时间最长,但是插入、删除和查找平均用时最少。

  • 数组
    创建用时最少,但是插入、删除操作用时最多,查找用时仅次于链表。

  • 链表
    除了查找用时最大,其余都排在数组和哈希表之间。

由以上数据可知,数组的优势在于创建数组用时少,可以适用于规模较小的数据。

链表创建时间比哈希表稍快(约17倍),但是查找用时是哈希表的1000倍以上,是数组的7倍左右。这意味着你要花较多的时间来方便你的插入、删除,但是查找还是算了吧,反正我是不会想经常去查链表里存储的东西的。

哈希表在插入、删除、以及查找操作方面有着优异的表现,但是超长的创建时间

提醒:除非你之后要进行大量的增删查改,不然还是用数组来的方便快捷。每次执行代码我的机器总是在创建哈希表的时候要停顿一下。

https://www.iteye.com/blog/351220704-2201666

为什么哈希表能够加快查找效率?

很多语言都提供map的数据类型,map一个很常用的功能,那就是key-value 的存储和查找功能。这种数据类型的实现原理就是通过哈希表来实现快速查找。

哈希表的基本原理:原本无序的集合经过哈希算法被重新调整位置,排列成新序列,也就是hash table(与其说是表,不如说是某种数据结构的数组)

哈希表的好处,查找复杂度为常数量级o(1),快!
哈希表的代价,需要通过哈希算法将原始序列映射到hash table上,并且构建hash table需要分配一段内存,从本质上说这是一种空间换时间的办法。

哈希是什么?为什么哈希存取比较快?

不太恰当的比喻:
    XM 指的是“小明”,也指的是“小萌”
    XM就是哈希值,小明和小萌就是拥有同一个哈希值的,存在同一个链表的元素。
    想要获取小萌,首先使用hashcode获取到这两个人,然后再通过equals获取到小萌。
  个人理解

在这里插入图片描述

哈希表
  其实就是一个一维数组,而数组中的每一个元素都是一个单向链表而已。这样的数据结构解决了 数组的增删元素的不足 和 链表的查询效率的不足。
  
  数组是存在连续的存储空间,而链表的存储空间不连续

常见的数据结构中,增删查改是最基本的操作。下面我将为你解释常见数据结构中的增删查改操作: 1. 数组数组是一种线性数据结构,可以通过索引直接访问元素。在数组中,增加元素可以通过在指定位置插入新元素来实现,删除元素可以通过将指定位置的元素移除来实现,查找元素可以通过遍历数组来找到指定元素,修改元素可以通过直接修改指定位置的元素来实现。 2. 链表链表是一种非连续的数据结构,每个节点都包含一个数据元素和一个指向下一个节点的指针。在链表中,增加元素可以通过在指定位置插入新节点来实现,删除元素可以通过将指定节点的前后节点连接起来来实现,查找元素可以通过遍历链表来找到指定元素,修改元素可以通过直接修改指定节点的数据来实现。 3. 栈:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。在栈中,增加元素叫做入栈(push),删除元素叫做出栈(pop),查找元素只能通过出栈操作来实现,修改元素需要先将指定元素出栈然后再入栈修改后的元素。 4. 队列:队列是一种先进先出(FIFO)的数据结构,只能在队尾插入元素,在队头删除元素。在队列中,增加元素叫做入队(enqueue),删除元素叫做出队(dequeue),查找元素只能通过出队操作来实现,修改元素需要先将指定元素出队然后再入队修改后的元素。 5. 哈希表哈希表是一种根据关键字直接访问内存位置的数据结构,它使用哈希函数将关键字映射到内存中的位置。在哈希表中,增加元素可以通过计算关键字的哈希值并插入到相应的位置来实现,删除元素可以通过计算关键字的哈希值找到相应位置然后删除元素,查找元素可以通过计算关键字的哈希值找到相应位置然后检查是否存在该元素,修改元素可以通过计算关键字的哈希值找到相应位置然后修改元素的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值