计算机数据处理知识
數據結構與算法
開發工具與關鍵技術:計算機數據處理 作者:陳榮基 撰寫時間:2020.05.07數據結構與算法的意義
我們常說的計算機程序是數據結構與算法的結合。所以我們要想更快地編寫出
更高效的計算機程序就必須熟悉數據結構與算法。
數據的邏輯結構
我們把數據結構又稱為數據的邏輯結構,數據的邏輯結構分為線性結構和非線
性結構,而非線性結構又分為樹結構和圖結構。
線性結構
結構中數據元素之間是一對一的關系。除了開始和最后的元素外,每個元素都有
且僅有一個前驅和一個后繼元素。如下圖
樹結構
結構中數據元素之間是一對多的關系。除了根結點(元素)外,每個元素都有
且僅有一個前驅和0個或若干個后繼元素。如下圖
圖結構
結構中的數據元素之間是多對多的關系。每個元素都有0個或若干個前驅和0
個或若干個后繼。如下圖
對與這樣理論地講解可能不是很理解,那我們就來點實際應用的講解
我們就拿數據庫建的表之間的數據關系來講解吧
因為表與表之間的連接是通過數據外鍵ID進行連接起來的,也就是可以
把表一的主鍵ID作為表二的外鍵ID把兩個表的數據連接起來。這樣的
連接可以讓表一的數據對表二的數據是一對一或者是一對多的關系。表
二對表一的數據只能是一對一的關系。
兩表之間數據一對一關系如下圖
從圖中的連線可以看出數據之間是一對一的關系。一對一的關系就類似
于每個人與自己身份證號的關系一樣,每個人都有一個身份證號,且身
份證號都是唯一的。
接著就是兩表之間一對多的關系了,如下圖
從圖中可以看出表一對表二的數據存在這一對多的關系。一對多的關系
類似于父親與孩子們的關系或者是班級與學生們的關系。就像一個父親
有多個孩子,一個班級有多名學生一樣。
對于父親來說可以有一個或多個孩子,而對于孩子們來說父親就只有一
個。,對于一個班級來說他也是可以有一名或有多名學生,而對于學生
們來說班級卻是同一個。這就是之前所說的兩表之間的關系。表一對于
表二可以是一對一關系也可以是一對多關系,而表二對于表一只能是一
對一關系。
兩個表之間可以體現一對一和一對多的關系。那么多對多的關系該怎么
體現呢?
多對多的關系的體現就要借助第三個表了,他需要借助第三個表作為中
間表把另外兩個表連接起來輔助完成多對多的關系。中間表除了主鍵之
外只需要另外二個表的主鍵ID作為外鍵ID數據連接起來,不需要其他
字段數據了。
如下是三表構成多對多關系圖
從圖中我們可以看出表二是作為中間表把表一和表三的數據連接了起來。
我們還可以看出表一對于表二的數據可以是一對一也可以是一對多關系
表三對于表二也是一樣。這就使得表一對于表三的數據既可以一對一又
可以一對多,而表三對于表一也可以一對一或者一對多。這就形成了表
一的每一條數據可以與表三的所有數據進行連接,表三的每一條數據也
可以與表一的所有數據進行連接。這就是所謂的多對多關系。
看下圖可以更清晰地體現多對多關系
計算機算法的概念
計算機算法指的是解決問題的有限步驟,可以通過有限的代碼步驟解決
計算機數據處理之間的問題。
計算機算法的特性
算法的特性指的是算法具有的特點
計算機算法的特性有五個分別為有窮性、確定性、可行性、輸入、輸出
(1) 有窮性
指的是解決問題的步驟是有限的。
(2) 確定性
每一步驟的算法含義都是確定的,不含二義性。
(3) 可行性
算法的每一個步驟都能有效地執行,并得到確定的結果
(4) 輸入
所謂的輸入,是指算法執行時,從外界獲取必要的數據。計算機運行程
序的目的是為了進行數據的處理。在大多數情況下,數據需要從外界進
行輸入。有些情況下,數據已經包含在算法中,所以就不需要進行數據
的輸入了。所以計算機算法可以有零個或多個輸入。
(5) 輸出
計算機算法都是有一個或多個輸出,沒有輸出的算法是毫無意義的。
計算機算法設計的要求
根據計算機算法的特性,我們在設計算法時就需要設定一些要求,從而
才能保障算法正確地、高效率地解決問題。
算法設計的好壞關乎程序的執行效率,算法的設計必須滿足下列四個要求。
(1) 正確性
算法對于一切合法的數據都能夠得出滿足要求的結果,事實上要驗證算法
的正確性是極為困難的,因為通常情況下合法的輸入數據量太大,用窮舉
法逐一驗證是不現實的。所謂的算法正確性是指算法達到了測試要求。
(2) 可讀性
算法的可讀性是指人對算法閱讀理解的難易程度,可讀性高的算法便于交
流,有利于算法的調試和修改。通常增加算法的可讀性是在書寫算法時采
用按縮進格式書寫、分模塊書寫等方法可增加算法的可讀性。
(3) 健壯性
對于非法錯誤的數據,算法能夠給出相應的相應,而不是造成不可預料的
后果
(4) 效率與低存儲量需求
效率指的是算法的執行時間,執行的時間越短,算法的效率就越高。存儲
量需求指的是算法在執行中所需要的最大存儲空間,存儲量需求越小,算
法的執行效率就越高。
所以我們要想正確地、高效率地解決數據之間的問題,我們就要學習數據
結構與算法的知識了。
總結
- 上一篇: NVIDIA GPU 常用操作
- 下一篇: kafka集群Error creatin