首页 > 其他分享 >常用的提高读写效率的数据结构:哈希表,有序数组,搜索树

常用的提高读写效率的数据结构:哈希表,有序数组,搜索树

时间:2022-09-06 13:22:40浏览次数:60  
标签:数组 读写 哈希 查找 搜索 有序 数据结构 复杂度

哈希表:
key-value的存储结构,把值放在数组中,用一个哈希函数把key换算成确定的位置,然后把value放在数组的这个位置,不可避免多个key值经过哈希算法后出现同一个值的情况,处理这种情况的一种方式就是,拉出一个链表。
数组空间越小,哈希表值重复的概率就越大,对单链表的线性查找频率就越高。反过来,如果数组空间过来,又会出现很多闲置的空间,所以合理合计数组的大小很重要。

但是注意,哈希函数算法的特性导致存储的value是无序的,所以用哈希表的数据结构用作索引的情况下,做区间查询是非常慢的。所以哈希表哈希索引适用于等值查询的情况,比如Memcached及其他一些NoSql引擎。

https://baijiahao.baidu.com/s?id=1671247611862752442&wfr=spider&for=pc

 

 

有序数组:

 以身份证为例,将数据按照身份证号的大小,有序存储。查找的时候,只需要二分查找就可以定位到数据。时间复杂度是log(N)。//2的x次方等于N。比如N=8。那二分查找的时间复杂度就是3,N=16,就是4以此类推。

有序数组在等值查找区间查找都很优秀,但是却有一个致命问题,当有序找到需要插入数据的位置时,需要挪动这个数据后面所有的数据,所以有序数组只适合用静态数据的引擎。比如2017商城订单的信息,这种不会再改变的数据信息。

 

 

搜索树:

我们可以由浅入深先理解下二叉搜索树。二叉搜索树的特点是,左边子节点小于父节点,父节点又小于右边子节点。查找的时间复杂度为log(N),为了保持这颗树为平衡二叉树,更新的时间复杂度也是log(N)。

 

标签:数组,读写,哈希,查找,搜索,有序,数据结构,复杂度
From: https://www.cnblogs.com/songcuiting/p/16661398.html

相关文章

  • 双哈希_Birthday_Cake
    BirthdayCake思路:找到每个串的公共前后缀,统计公共前后缀之间的字符串的hash值,并判断所给n个串中是否存在符合条件的串eg:abbddab对于该串,我们不难发现,公共前后缀是ab,公......
  • 从 Linux 内核角度探秘 JDK NIO 文件读写本质
    1.前言笔者在《从Linux内核角度看IO模型的演变》一文中曾对Socket文件在内核中的相关数据结构为大家做了详尽的阐述。又在此基础之上介绍了针对socket文件的......
  • 微服务治理热门技术揭秘:动态读写分离
    作者:十眠我们从应用的视角出发整理抽象了我们在访问、使用数据库时场景的一些稳定性治理、性能优化、提效等方面的实战经验,对于每一个后端应用来说,数据库无疑是重中之重,我......
  • 晓晓---python文件的读写模式的理解
    1.python读取文件模式的自我理解:'r'openforreading(default)----只读模式打开文件,不能写;'w'openforwriting,truncatingthefilefirst----只写模式......
  • java锁:第四章:读写锁
    理论:未使用读写锁的代码:packagecom.javaliao.backstage;importjava.util.HashMap;importjava.util.Map;classData{privatevolatileMapmap=newHashM......
  • C++数据结构课程设计
    C++数据结构课程设计《数据结构》课程设计指导书一、课程设计的目的课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析、解决......
  • 绪论:数据结构与算法
    数据结构数据 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合按照视点不同,把数据结构分为逻辑结构和物理结构 算法算法是解决特定问题求解步骤的描述......
  • 数据结构与算法学习笔记———链表(Linked List)
    链表(LinkedList)#该篇笔记转自【Python】python链表_小周ipython的博客-CSDN博客_python链表简介链表(LinkedList):是一种线性表数据结构。他是用一组任意的存储单元(可......
  • MySQL读写分离
    一、主从分离一般MySQL架构为一主两从,此时,只保证了数据库高可用,并没有高性能 二、读写分离在主从分离的基础上,写主库,读从库,提高数据库性能 三、读写分离方式1、引......
  • 数据结构预算法学习笔记 —— 双端队列(Deque)
    双端队列(Deque)1.简介双端队列是一种有次序的数据集。和队列相似,其两端也可以称作为”首“”尾“段,但deque中数据项既可以从队首加入,也可以从队尾加入。同样,数据项也可以......