当前位置:网站首页>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 .
边栏推荐
- Aaai22 | structural tagging and interaction modeling: a "slim" network for graph classification
- 【微服务|Sentinel】sentinel整合openfeign
- Behind sharing e-commerce: the spirit of CO creation, symbiosis, sharing, CO prosperity and win-win
- mysql ---- Oracle中的rownum转换成MySQL
- 物联网开发零基础教程
- 马赛克后挡板是什么?
- Matplotlib common charts
- How to display real-time 2D map after rviz is opened
- AirServer最新Win64位个人版投屏软件
- 建模和影视后期有什么关联?
猜你喜欢

Wechat personal small store one click opening assistant applet development

flutter Unable to load asset: assets/images/888.png

Zero foundation tutorial of Internet of things development

Glass mosaic

Future trend and development of neural network Internet of things

mt管理器测试滑雪大冒险

CKS CKA CKAD 将终端更改为远程桌面

The online beggar function of Japanese shopping websites

Notes to problems - file /usr/share/mysql/charsets/readme from install of mysql-server-5.1.73-1 glibc23.x86_ 64 c

2022 safety officer-c certificate examination question simulation examination question bank and simulation examination
随机推荐
会声会影2022智能、快速、简单的视频剪辑软件
Matplotlib常用设置
【微服务|Sentinel】@SentinelResource详解
What category does the Internet of things application technology major belong to
Linux foundation - centos7 offline installation of MySQL
物联网技术应用属于什么专业分类
SWT / anr problem - SWT causes low memory killer (LMK)
Airserver latest win64 bit personal screen projection software
建模和影视后期有什么关联?
Daily three questions 6.29
mysql binlog的清理
Oracle中已定义者身份执行函数AUTHID DEFINER与Postgresql行为的异同
玻璃马赛克
Yunxin small class | common cognitive misunderstandings in IM and audio and video
【微服务|Sentinel】sentinel整合openfeign
有没有一段代码,让你为人类的智慧所折服
MySQL -- convert rownum in Oracle to MySQL
Paramètres communs de matplotlib
2022 crane driver (limited to bridge crane) examination questions and simulation examination
The difference between timer and scheduledthreadpoolexecutor