資料結構很重要,但對於非科班出身的程式設計師來說,熟練地掌握資料結構在程式設計中的應用是一件很困難的事,因為資料結構很抽象,有些演算法理解起來很困難,最近找了很多關於資料結構的書,決定再重溫一下程杰的《大話資料結構》,記錄重要的資料結構知識筆記供自己和大家在以後的學習與程式設計時參考。
資料:是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。
資料及符號,必須具備兩個前提:(1)可以輸入到計算機中;(2)能被電腦程式處理。
資料元素:是組成資料的、有一定意義的基本單位,在計算機中通常作為整體處理。也被稱為記錄。(人類的資料元素是人)
資料項:乙個資料元素可以由若干個資料項組成,人作為資料元素,可以由眼耳鼻等資料項,資料項是資料不可分割的最小單位。
資料物件:是性質相同的資料元素的集合,是資料的子集。
資料結構:是相互之間存在一種或多種特定關係的資料元素的集合。按照視點的不同,資料結構分為邏輯結構和物理結構。
邏輯結構:是指資料物件中資料元素之間的相互關係。包括:集合結構、線性結構、樹形結構、圖形結構。
物理結構:是指資料的邏輯結構在計算機中的儲存形式。包括:順序儲存結構、鏈式儲存結構。
資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
抽象資料型別(abstract data type,adt):是指乙個數學模型及定義在該模型上的一組操作。如圖:
演算法:演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。
演算法的特性:
(1)輸入輸出:演算法具有零個或多個輸入,至少有乙個或多個輸出。
(2)有窮性:指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。
(3)確定性:演算法的每一步驟都有確定的含義,不會出現二義性。
(4)可行性:演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成。
演算法的設計要求:
(1)正確性:演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。
(4)時間效率高和儲存量低
演算法效率的度量方法:
(1)事後統計方法:通過設計好的測試程式和資料,利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。
(2)事前分析估算方法:在計算機程式編制前,依據統計方法對計算機進行估算。
函式的漸近增長:
給定兩個函式f(n)和g(n),如果存在乙個整數n,使得對於所有的n>n,f(n)總是比g(n)大,那麼,我們說f(n)的漸近快於g(n)。
注意:判斷乙個演算法的效率時,函式中的常數和其他次要項常常可以忽略,更應該關注主項(最高端項)的階數。
演算法時間複雜度:
在進行演算法分析時,語句總的執行次數t(n)時關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作:t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。
演算法空間複雜度:
演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。
希望大家在今後的學習中,好好利用演算法分析的工具,改進自己的**,讓計算機輕鬆一點,這樣你也會更加勝人一籌。
大話資料結構閱讀筆記 2
線性表的順序儲存結構,在存 讀資料時,不管是哪個位置,時間複雜度都是o 1 在插入或刪除資料時,時間複雜度是o n 優點 1 無須為表示表中元素之間的邏輯關係而增加額外的儲存空間 2 可以快速地訪問表中任意位置的元素。缺點 1 插入或刪除操作需要移動大量元素 2 當線性表的長度變化較大時,難以確定儲...
《大話資料結構 》閱讀筆記 1 4章
3.資料結構 相互之間存在一種或多種關係的資料元素的集合 4.資料結構 邏輯結構和物理結構 邏輯結構 1 集合結構 所有元素平等地屬於乙個集合 2 線性結構 一對一 3 樹形結構 一對多 4 圖形結構 多對多 物理結構 儲存結構 將資料和邏輯關係儲存到計算機記憶體中 1 順序儲存 2 鏈式儲存 1....
大話資料結構筆記1資料結構緒論
1 資料結構 是相互之間存在一種或多種特定關係的資料元素的集合 兩個前提 1 可以輸入到計算機中 2 能被電腦程式處理 3 資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理,也被稱為記錄。4 資料項 乙個資料元素可以由若干個資料項組成,資料項是資料不可分割的最小單位。5 資料...