一、程序與算法
阿新 • • 發佈:2018-10-10
db4 描述 com 51cto 需要 鏈式存儲結構 定義 fff 關聯 一、程序的本質
程序是為了實際的問題而存在從本質上而言,程序是解決問題的步驟描述。
數據結構起源
計算機從解決數值計算問題到解決生活中的問題
現實生活中的問題涉及不同個體間的復雜聯系
需要在計算機程序中描述生活中個體間的聯系
數據結構主要研究非數值計算程序問題中的操作對象以及它們之間的關系
數據結構中的概念:
數據 – 程序的操作對象,用於描述客觀事物
數據的特點:可以輸入到計算機;可以被計算機程序處理
數據元素 – 組成數據的基本單位
數據項:一個數據元素由若幹數據項組成
數據對象 – 性質相同的數據元素的集合
數據的邏輯結構
集合結構:數據元素之間沒有特別的關系,僅同屬相同集合
線性結構:數據元素之間是一對一的關系
樹形結構:數據元素之間存在一對多的層次關系
圖形結構:數據元素之間是多對多的關系
數據存儲的物理結構
物理結構:邏輯結構在計算機中的存儲形式
順序存儲結構:將數據存儲在地址連續的存儲單元裏
鏈式存儲結構:將數據存儲在任意的存儲單元裏,通過保存地址的方式找到相關聯的數據元素
二、程序的靈魂-算法
數據結構只是靜態的描述了數據元素之間的關系
高效的程序需要在數據結構的基礎上設計和選擇算法
算法的定義:
算法是特定問題求解步驟的描述
在計算機中表現為指令的有限序列
算法是獨立存在的一種解決問題的方法和思想。
算法的特性:
輸入:算法具有0個或多個輸入
輸出:算法至少有1個或多個輸出
有窮性:算法在有限的步驟之後會自動結束而不會無限循環
確定性:算法中的每一步都有確定的含義,不會出現二義性
可行性:算法的每一步都是可行的
算法設計的準則:
正確性
算法對於合法數據能夠得到滿足要求的結果
算法能夠處理非法輸入,並得到合理的結果
算法對於邊界數據和壓力數據都能得到滿足要求的結果
正確性是算法最需要滿足的基本的準則,但是作為計算機程序,不可能無限制的滿足這條準則。
可讀性
算法要方便閱讀,理解和交流
健壯性
算法不應該產生莫名其妙的結果
高性價比
利用最少的時間和資源得到滿足要求的結果
算法效率的度量
大O表示法
算法效率嚴重依賴於操作(Operation)數量
在判斷時首先關註操作數量的最高次項
操作數量的估算可以作為時間復雜度的估算
算法的空間復雜度:
算法的空間復雜度通過計算算法的存儲空間實現
S(n) = O(f(n))
其中,n為問題規模,f(n)為在問題規模為n時所占用存儲空間的函數
大O表示法同樣適用於算法的空間復雜度
當算法執行時所需要的空間是常數時,空間復雜度為O(1)
空間與時間的策略
多數情況下,算法執行時所用的時間更令人關註
如果有必要,可以通過增加空間復雜度來降低時間復雜度
同理,也可以通過增加時間復雜度來降低空間復雜度
程序是為了實際的問題而存在從本質上而言,程序是解決問題的步驟描述。
數據結構起源
計算機從解決數值計算問題到解決生活中的問題
現實生活中的問題涉及不同個體間的復雜聯系
需要在計算機程序中描述生活中個體間的聯系
數據結構主要研究非數值計算程序問題中的操作對象以及它們之間的關系
數據結構中的概念:
數據 – 程序的操作對象,用於描述客觀事物
數據的特點:可以輸入到計算機;可以被計算機程序處理
數據元素 – 組成數據的基本單位
數據項:一個數據元素由若幹數據項組成
數據對象 – 性質相同的數據元素的集合
數據的邏輯結構
集合結構:數據元素之間沒有特別的關系,僅同屬相同集合
線性結構:數據元素之間是一對一的關系
樹形結構:數據元素之間存在一對多的層次關系
圖形結構:數據元素之間是多對多的關系
數據存儲的物理結構
物理結構:邏輯結構在計算機中的存儲形式
順序存儲結構:將數據存儲在地址連續的存儲單元裏
鏈式存儲結構:將數據存儲在任意的存儲單元裏,通過保存地址的方式找到相關聯的數據元素
二、程序的靈魂-算法
數據結構只是靜態的描述了數據元素之間的關系
高效的程序需要在數據結構的基礎上設計和選擇算法
算法的定義:
在計算機中表現為指令的有限序列
算法是獨立存在的一種解決問題的方法和思想。
算法的特性:
輸入:算法具有0個或多個輸入
輸出:算法至少有1個或多個輸出
有窮性:算法在有限的步驟之後會自動結束而不會無限循環
確定性:算法中的每一步都有確定的含義,不會出現二義性
可行性:算法的每一步都是可行的
算法設計的準則:
正確性
算法對於合法數據能夠得到滿足要求的結果
算法能夠處理非法輸入,並得到合理的結果
算法對於邊界數據和壓力數據都能得到滿足要求的結果
可讀性
算法要方便閱讀,理解和交流
健壯性
算法不應該產生莫名其妙的結果
高性價比
利用最少的時間和資源得到滿足要求的結果
算法效率的度量
大O表示法
算法效率嚴重依賴於操作(Operation)數量
在判斷時首先關註操作數量的最高次項
操作數量的估算可以作為時間復雜度的估算
算法的空間復雜度:
算法的空間復雜度通過計算算法的存儲空間實現
S(n) = O(f(n))
其中,n為問題規模,f(n)為在問題規模為n時所占用存儲空間的函數
大O表示法同樣適用於算法的空間復雜度
當算法執行時所需要的空間是常數時,空間復雜度為O(1)
空間與時間的策略
多數情況下,算法執行時所用的時間更令人關註
如果有必要,可以通過增加空間復雜度來降低時間復雜度
同理,也可以通過增加時間復雜度來降低空間復雜度
一、程序與算法