当前位置:网站首页>Concepts of dictionary, hash table and array
Concepts of dictionary, hash table and array
2022-07-01 23:26:00 【Stobli】
explain : This article is also what I learned from consulting materials on the Internet , Does not mean complete accuracy !! Only represent personal thoughts , Welcome to errata .
important : Don't confuse the abstract data structure with the underlying implementation .
Catalog
One 、 Array
The data structure is called one-dimensional array , Linear table can be used 、 vector 、 One dimensional matrix to store .
The data structure is called two-dimensional array , It can be used as a two-dimensional matrix or as an internal storage of some other structure .
characteristic
1. An array is a collection of elements of the same data type .
2. The elements in an array are stored in sequence , They are stored in memory in this order .
3. An array element is represented by the name of the entire array and its own ordinal position in the array . for example ,a[0] Indicates the name is a The first element in the array of ,a[1] Representative array a The second element of , And so on .
Two 、 Dictionaries
Dictionary is an applied concept , Is a structure that stores key value pairs , You can use hash tables 、 Red black tree implementation .
therefore , Many people are confused , What's the difference between a dictionary and a hash table , Why is it so similar , Are stored key value pairs . At the bottom of the dictionary is the hash table ( not always , It could be a tree ) ah !!
3、 ... and 、 Hashtable
Baidu Encyclopedia :“ Hash table (Hash table, Also called Hashtable ), Is according to the key (Key) And directly access the data structure in memory storage location . in other words , It works by calculating a function of the key value , Map the data you want to query to a location in the table to access records , This speeds up the search . This mapping function is called the hash function , The array of records is called Hash table .
The hash table stores entry, That is, key value pairs . Hash function pairs Key Hash to get a hash value , This value is the address of the key value pair in the hash table . Then you can guess , If the hash function is not designed so well , Probability will produce sparsity , It can be understood as a one-dimensional array , Elements are stored randomly , Spacing between elements N Empty space . in other words , From a mathematical point of view, a hash table may be a sparse array .

So it seems , Hash ( hash ) Functions are extremely important , A good hash algorithm can make the hash table close to the array , Instead of sparse arrays ( One dimensional matrix ).
What is hash collision ? It's just one. Entry Key Get a hash value after hashing , This value is its pit , Then I found that the pit had been occupied , This is hash collision . There are two ways to solve hash collision : Open chain method and open addressing method .
Open chain method is easy to understand , When it was found that the pit was occupied , Just create a linked list , The corresponding position of the hash table stores the pointer to this linked list , Later elements can be stored on demand , It can be placed at the end of the chain , It can be inserted at the end of the chain , It can also be arranged in order of size , Anyway, choose on demand , The addition and deletion of linked lists are very convenient .
The open addressing method is when this pit is found to be occupied , Then go down to find out whether the next position is occupied , If not, just take this entry Put it in , If it is still occupied , Just keep looking for , Get it done . Of course, what is introduced here is only an implementation , There are other options , This is a concept , Those who are interested can continue Google Study .
When the number of key value pairs increases , The hash table may not fit , Then we need to expand the capacity . There are many different expansion schemes , among redis There is an expansion factor . For example 0.5, Apply first 1000 Space , When occupying 500 After three positions , Start to reapply for space , also rehash To the new hash table , and redis It's progressive rehash, Those who are interested can read this book , It's very detailed , Strongly recommend :《redis Design and implementation 》
To make a long story short , A hash table is a sparse array , When hash collision occurs, it can become a sparse array + Linked list or sparse array + Trees .
Four 、 summary
Dictionaries and hash tables are data structures that store key value pairs , But the dictionary is the application layer , It 's an abstract concept , The bottom layer can be a hash table or a red black tree . One of the basic data structures of hash table is sparse array , If the hash function is well designed , It can be similar to an array , That is, there is no vacancy . Array is a continuous storage data structure .
边栏推荐
- typescript枚举
- Notes on problems - /usr/bin/perl is needed by mysql-server-5.1.73-1 glibc23.x86_ sixty-four
- Future trend and development of neural network Internet of things
- 【微服务|Sentinel】sentinel整合openfeign
- 物联网现状及未来发展趋势
- 2022 crane driver (limited to bridge crane) examination questions and simulation examination
- 2021 RoboCom 世界机器人开发者大赛-高职组初赛
- js——arguments的使用
- Paramètres communs de matplotlib
- Is it safe to choose mobile phone for stock trading account opening in Shanghai?
猜你喜欢

Redis 主从同步

日本购物网站的网络乞丐功能
![Jerry's burning of upper version materials requires [chapter]](/img/65/fcd804e00dc08a2bd056e8e6493829.png)
Jerry's burning of upper version materials requires [chapter]

Matplotlib common charts

2022 safety officer-c certificate examination question simulation examination question bank and simulation examination

“35岁,公司老总,月薪2万送外卖“:时代抛弃你,连声再见都没有

Yoga27 multidimensional all-in-one computer with excellent appearance and high-end configuration

SWT/ANR问题--SWT 导致 kernel fuse deadlock

马赛克后挡板是什么?

神经网络物联网的发展趋势和未来方向
随机推荐
Glass mosaic
MT manager test skiing Adventure
SWT/ANR问题--SWT 导致 kernel fuse deadlock
每日三题 6.30(2)
物联网技术应用属于什么专业分类
CADD课程学习(3)-- 靶点药物相互作用
y53.第三章 Kubernetes从入门到精通 -- ingress(二六)
Openresty load balancing
Postgresql源码(58)元组拼接heap_form_tuple剖析
ShanDong Multi-University Training #3
How to display real-time 2D map after rviz is opened
2022年起重机司机(限桥式起重机)考试试题及模拟考试
共享电商的背后: 共创、共生、共享、共富,共赢的共富精神
Experience of practical learning of Silicon Valley products
Matplotlib common settings
typescript枚举
通过Go语言创建CA与签发证书
会声会影2022智能、快速、简单的视频剪辑软件
【微服务|Sentinel】sentinel整合openfeign
ShanDong Multi-University Training #3