1.python程式的計算複雜性
2.問題和複雜性
3.計算和資料表示
用計算機解決問題,可以認為是實現某種資訊表示形式的轉換.
(1)資料data:電腦程式能夠處理的符號形式的綜合,資料是編碼的資訊。
(2)資料元素data element:資料的基本單位
(3)資料結構data structures:一組資料元素按照一定方式構成的復合資料形式,以及作用於這些元素或者結構上的一些函式或操作。常用資料結構有:
表/堆疊/佇列/鏈結表/字串/樹/二叉樹/字典/集合/圖
4.資料結構
(1)資料結構的特徵:邏輯結構(元素之間的抽象關係)、物理結構(邏輯結構在計算機儲存器中的對映,又稱儲存結構)、行為特徵(作用於資料結構上的各種運算,如檢索、插入、刪除元素)
(2)python資料結構:
一.典型資料元素:整數、浮點數、布林值
二、python中標準資料結構:
正文序列型別str、序列型別list和tuple、集合型別set和frozenset、對映型別dict
三、簡單介紹python資料結構
(1)字串,型別名str,不變(immutable)正文序列型別
物件:字元的有窮序列
訪問操作:求長度、取成員,取子串(切片),查詢子串,判斷成員字元型別,等
基於已有字串構造新串:改變大小寫,拼接,格式化(變換格式),子串替換,切分,等等,都是構造新串。
(2)元組,型別名tuple,不變序列型別
物件:任意元素的有窮序列,乙個元組的生源可為不同型別的物件
序列的共有操作:成員判斷(in,not in),取元素/切片,長度,元素檢索/計數,最大/最小,拼接/重複拼接(產生新序列)
不變序列的唯一特殊操作是hash,它從任意個不變序列生成乙個整數,具體對映方式由系統的實現確定
不變序列可以作為字典的關鍵碼,可作為set/frozenset的元素
(3)表,型別名list,可變mutable的序列型別
物件:任意元素的序列
支援所有共有的序列操作
所有可變序列操作(改變被操作的表):元素替換(賦值),切片替換/刪除,元素插入/刪除,等等
(4)集合,型別名set和frozenset,分別為可變/不變匯集型別。其元素可以是數值或邏輯物件/字串/不變序列等,元素值唯一
物件:任意滿足條件的元素的匯集
frozenset支援所有不變集合操作:元素個數,元素判斷,集合之間的關係(包含/相交),集合運算(並/交/差/對稱差)等
set還支援可變集合操作:修改集合的運算(並/交/差/對稱差),加入/刪除元素等
集合的元素只能是不變物件,可求出hash值
(5)字典,型別名dict,可以看作是關鍵碼和值的二元組的集合,其中關鍵碼必須是不變物件
物件:一組關鍵碼到一組值的對映
最基本操作:關鍵碼-值二元組的加入和關鍵碼檢索
其他操作:元素個數,關鍵碼存在判斷,元素刪除(基於關鍵碼),另一些修改字典的操作,等
5.抽象資料型別
一、思想:採用某種資料形式表示所需的資料「型別」,並定義一組操作,實現對有關資料物件的所需操作
二、python提供了支援定義資料抽象的機制(python基本系統就是基於類和物件構造起來的):
(1)定義資料型別的標準python機制是class定義(類定義)
(2)定義好的類可以像內建型別一樣使用,包括生成類的例項(物件,object)
(3)在類定義裡,可以為本類的例項定義一組相關操作
6.類與物件導向程式設計
一、oop objected oriented programming
(1)物件導向程式設計是指:定義類,生成類的物件,基於這種物件組織和描述計算,這一套做法稱作oop
(2)類:
資料結構 二 演算法緒論
一,演算法定義 算是是對於特定問題的求解步驟的描述,在計算機中表現為有限的指令序列.每條指令序列包含乙個或者多個操作 二,演算法的特徵 1,輸入.演算法有零個或者多個輸入 2,輸出.演算法至少要有乙個輸出 3,確定性.演算法的每乙個步驟都有確定的含義,不會出現二義性 4,可行性.每一步執行有限次數完...
資料結構與演算法(緒論)
作為乙個準程式設計師,在讀本科的時候,就一直被老師不停的灌輸資料機構與演算法的重要性,但是好像我們從來就沒遇到過真正棘手的需要通過資料結構去解決的問題,可能唯一再聽到它的時候就是找工作實習的時候會被面試官提問,因此我們似乎覺得資料結構沒那麼重要,而且又因為各種程式語言,尤其是python,各種內建的...
資料結構與演算法 緒論
一般法則 法則1 for迴圈 乙個for迴圈的執行時間至多是該for迴圈內部那些語句的執行時間乘以迭代的次數。法則2 巢狀的for迴圈 從裡向外分析這些迴圈。在一組巢狀迴圈內部的一些語句總的執行時間為該語句的執行時間乘以該組所有的for迴圈的大小的乘積 例如,下列程式片斷為o n2 for i 0 ...