sqlyong 删除数据能否撤回_数据结构知识点总结
some quoted by
Fundebug:代碼面試需要知道的8種數(shù)據(jù)結(jié)構(gòu)(附面試題及答案鏈接)?zhuanlan.zhihu.comadded with other sources
8 種常用數(shù)據(jù)結(jié)構(gòu)
1. 數(shù)組
數(shù)組(Array)大概是最簡(jiǎn)單,也是最常用的數(shù)據(jù)結(jié)構(gòu)了。其他數(shù)據(jù)結(jié)構(gòu),比如棧和隊(duì)列都是由數(shù)組衍生出來的。
下圖展示了 1 個(gè)數(shù)組,它有 4 個(gè)元素:
每一個(gè)數(shù)組元素的位置由數(shù)字編號(hào),稱為下標(biāo)或者索引(index)。大多數(shù)編程語(yǔ)言的數(shù)組第一個(gè)元素的下標(biāo)是 0。
根據(jù)維度區(qū)分,有 2 種不同的數(shù)組:
- 一維數(shù)組(如上圖所示)
- 多維數(shù)組(數(shù)組的元素為數(shù)組)
2. 棧
撤回,即 Ctrl+Z,是我們最常見的操作之一,大多數(shù)應(yīng)用都會(huì)支持這個(gè)功能。你知道它是怎么實(shí)現(xiàn)的嗎?答案是這樣的:把之前的應(yīng)用狀態(tài)(限制個(gè)數(shù))保存到內(nèi)存中,最近的狀態(tài)放到第一個(gè)。這時(shí),我們需要棧(stack)來實(shí)現(xiàn)這個(gè)功能。
棧中的元素采用 LIFO (Last In First Out),即后進(jìn)先出。
下圖的棧有 3 個(gè)元素,3 在最上面,因此它會(huì)被第一個(gè)移除:
3. 隊(duì)列
隊(duì)列(Queue)與棧類似,都是采用線性結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。它們的區(qū)別在于,棧采用 LIFO 方式,而隊(duì)列采用先進(jìn)先出,即FIFO(First in First Out)。
下圖展示了一個(gè)隊(duì)列,1 是最上面的元素,它會(huì)被第一個(gè)移除:
4. 鏈表
鏈表(Linked List)也是線性結(jié)構(gòu),它與數(shù)組看起來非常像,但是它們的內(nèi)存分配方式、內(nèi)部結(jié)構(gòu)和插入刪除操作方式都不一樣。
鏈表是一系列節(jié)點(diǎn)組成的鏈,每一個(gè)節(jié)點(diǎn)保存了數(shù)據(jù)以及指向下一個(gè)節(jié)點(diǎn)的指針。鏈表頭指針指向第一個(gè)節(jié)點(diǎn),如果鏈表為空,則頭指針為空或者為 null。
鏈表可以用來實(shí)現(xiàn)文件系統(tǒng)、哈希表和鄰接表。
下圖展示了一個(gè)鏈表,它有 3 個(gè)節(jié)點(diǎn):
鏈表分為 2 種:
- 單向鏈表
- 雙向鏈表
Time Complexity:
- Indexing: Linked Lists: O(n)
- Search: Linked Lists: O(n)
- Optimized Search: Linked Lists: O(n)
- Insertion: Linked Lists: O(1)
5. 圖
圖(graph)由多個(gè)節(jié)點(diǎn)(vertex)構(gòu)成,節(jié)點(diǎn)之間闊以互相連接組成一個(gè)網(wǎng)絡(luò)。(x, y)表示一條邊(edge),它表示節(jié)點(diǎn) x 與 y 相連。邊可能會(huì)有權(quán)值(weight/cost)。
圖分為兩種:
- 無向圖
- 有向圖
在編程語(yǔ)言中,圖有可能有以下兩種形式表示:
- 鄰接矩陣(Adjacency Matrix)
- 鄰接表(Adjacency List)
遍歷圖有兩周算法
- 廣度優(yōu)先搜索(Breadth First Search)
- 深度優(yōu)先搜索(Depth First Search)
6. 樹
樹(Tree)是一個(gè)分層的數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)和連接節(jié)點(diǎn)的邊組成。樹是一種特殊的圖,它與圖最大的區(qū)別是沒有循環(huán)。
樹被廣泛應(yīng)用在人工智能和一些復(fù)雜算法中,用來提供高效的存儲(chǔ)結(jié)構(gòu)。
下圖是一個(gè)簡(jiǎn)單的樹以及與樹相關(guān)的術(shù)語(yǔ):
樹有很多分類:
- N 叉樹(N-ary Tree)
- 平衡樹(Balanced Tree)
- 二叉樹(Binary Tree)
- 二叉查找樹(Binary Search Tree)
- 平衡二叉樹(AVL Tree)
- 紅黑樹(Red Black Tree)
- 2-3 樹(2–3 Tree)
其中,二叉樹和二叉查找樹是最常用的樹。
Time Complexity:
- Indexing: Binary Search Tree: O(log n)
- Search: Binary Search Tree: O(log n)
- Insertion: Binary Search Tree: O(log n)
7. 哈希表
哈希(Hash)將某個(gè)對(duì)象變換為唯一標(biāo)識(shí)符,該標(biāo)識(shí)符通常用一個(gè)短的隨機(jī)字母和數(shù)字組成的字符串來代表。哈希可以用來實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu),其中最常用的就是哈希表(hash table)。
哈希表通常由數(shù)組實(shí)現(xiàn)。
哈希表的性能取決于 3 個(gè)指標(biāo):
- 哈希函數(shù)
- 哈希表的大小
- 哈希沖突處理方式
下圖展示了有數(shù)組實(shí)現(xiàn)的哈希表,數(shù)組的下標(biāo)即為哈希值,由哈希函數(shù)計(jì)算,作為哈希表的鍵(key),而數(shù)組中保存的數(shù)據(jù)即為值(value):
TreeMap
TreeMap can be a bit handy when we only need to store unique elements in a sorted order. Java.util.TreeMap uses ared-black treein the background which makes sure that there are no duplicates; additionally it also maintains the elements in a sorted order.
8. PriorityQueue
總結(jié)
以上是生活随笔為你收集整理的sqlyong 删除数据能否撤回_数据结构知识点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火爆!国产大飞机C919累计获得32家客
- 下一篇: 重定义 不同的基类型_镍及铁镍基耐蚀合金