算法導論 第十章 基本數據類型 & 第十一章 散列表(python)

更多的理論細節能夠用《數據結構》嚴蔚敏 看幾遍,數據結構很重要是實現算法的很大一部分python

下面主要談談python怎麼實現算法

10.1 棧和隊列數組

棧:後進先出LIFO數據結構

隊列:先進先出FIFOapp

python 中使用list實如今這些功能函數

棧:壓棧 append() 退棧   pop()spa

隊列:   入隊 append() 出隊 pop(0).net

棧:設計

>>> stack = list()
>>> stack.append(3)
>>> stack.append(2)
>>> stack.append(5)
>>> stack.append(1)
>>> stack
[3, 2, 5, 1]
>>> stack.pop()
1
>>> stack.pop()
5

隊列:指針

>>> queue = list()
>>> queue.append(1)
>>> queue.append(2)
>>> queue.append(3)
>>> queue.append(4)
>>> queue.append(5)
>>> queue
[1, 2, 3, 4, 5]
>>> queue.pop(0)
1
>>> queue.pop(0)
2
>>> queue
[3, 4, 5]

鏈表&指針對象的數組實現

這些數據結構在python中就沒有存在的價值, 用list都能輕鬆實現

有根樹:

class Node:
    def __init__(self,data):
        self.left = None
        self.right = None
        self.parent = None
        self.data = data

給出一個結點代碼,後面的二叉搜索樹紅黑樹再具體討論。

散列表(哈希表)

」散列表是普通數組概念的推廣「一這句話來解釋散列表再好不過了.

能夠把數組當作散列函數爲hash(x) = x % MAX (MAX比因此值都大) 獲得的散列值 在這個下標下處理數據

優勢:很好的指望值

難點:哈希函數的設計和衝突處理

下面引用別人的總結:

clipboard

clipboard[1]

散列表(python 使用dict):

>>> #初始化
>>> a = dict(one = 1,two = 2)
>>> #訪問
>>> a['one']
1
>>> #增長
>>> a['three'] = 3
>>> a
{'three': 3, 'one': 1, 'two': 2}
>>>

參考引用:

http://www.wutianqi.com/?cat=515&paged=4

http://blog.csdn.net/fxjtoday/article/details/6448083

相關文章
相關標籤/搜索