數據結構-08-集合(Set)-哈希表(Hash)-圖(Map)

##Set Set 是一種用於保存不重複元素的數據結構。常被用做測試歸屬性,故其查找的性能十分重要。python

Set 是python自帶的基本數據結構, 有多種初始化方式。 Python的set跟dict的Implementation方式相似, 能夠認爲set是隻有key的dict.數組

s = set()
s1 = {1, 2, 3}
s.add('shaunwei')
'shaun' in s  # return true
s.remove('shaunwei')

##Map - 哈希表 Map 是一種關聯數組的數據結構,也常被稱爲字典或鍵值對。數據結構

在 Python 中 dict(Map) 是一種基本的數據結構。性能

# map 在 python 中是一個keyword
hash_map = {} # or dict()
hash_map['shaun'] = 98
hash_map['wei'] = 99
exist = 'wei' in hash_map  # check existence
point = hash_map['shaun']  # get value by key
point = hash_map.pop('shaun') # remove by key, return value
keys = hash_map.keys()  # return key list
# iterate dictionary(map)
for key, value in hash_map.items():
    # do something with k, v
    pass

##Graph - 圖 圖的表示一般使用鄰接矩陣和鄰接表,前者易實現可是對於稀疏矩陣會浪費較多空間,後者使用鏈表的方式存儲信息可是對於圖搜索時間複雜度較高。測試

###鄰接矩陣 設頂點個數爲 V, 那麼鄰接矩陣能夠使用 V × V 的二維數組來表示。 g[i][j]表示頂點i和頂點j的關係,對於無向圖能夠使用0/1表示是否有鏈接,對於帶權圖則須要使用INF來區分。有重邊時保存邊數或者權值最大/小的邊便可。code

g = [[0 for _ in range(V)] for _ in range(V)]

###鄰接表 鄰接表經過表示從頂點i出發到其餘全部可能能到的邊。rem

###有向圖get

class DirectedGraphNode:
    def __init__(self, x):
        self.label = x
        self.neighbors = []

###無向圖 無向圖同上,只不過在建圖時雙向同時加。hash

class UndirectedGraphNode:
    def __init__(self, x):
        self.label = x
        self.neighbors = []
相關文章
相關標籤/搜索