瑞士計算機科學家niklaus wirth 教授提出:演算法+資料結構=程式
演算法:對資料運算的描述。
資料結構:資料的邏輯結構和儲存結構
程式設計:針對實際問題選擇一種好的資料結構和設計乙個好的演算法。
要設計出乙個好的程式,就必須有好的演算法。好的演算法在很大程度上取決於描述實際問題的資料結構,必須建立在研究資料的特性及資料之間存在的關係的基礎之上。
資料(data):描述客觀事物的符號集合;
資料元素(data element):資料的基本單位,有時乙個資料元素可由若干個資料項組成;
資料項(也稱字段、域、屬性):具有獨立含義的最小標識單位;
資料物件(data object):具有相同性質的資料元素的集合。
資料結構(data):帶有結構的資料元素的集合。
一般包括三方面內容:
1.資料的邏輯結構。資料元素之間的邏輯(或抽象)關係
①線性結構
資料元素(結點)之間存在著一對一的關係,且結構中僅有乙個開始結點和乙個終端結點,其餘結點都是僅有乙個 直接前趨和乙個直接後繼。如線性表,棧和佇列。
②非線性結構
資料元素之間存在著一對多或多對多的關係,即乙個結點可能有多個直接前趨和多個後繼。如樹,圖,網狀。
2.資料的儲存結構(物理結構)。資料元素及其關係在計算機內的儲存方式
兩個結構
①順序儲存結構:向量中各元素按其邏輯關係」順序「儲存。
②鏈式儲存結構:向量中各元素通過指標連線儲存在記憶體中。
四種基本的儲存方法實現
①順序儲存方法:把邏輯上相鄰的結點儲存在物理位置上也相鄰的連續儲存單元裡;
3.資料的運算。對資料元素施加的操作(行為)
常用的運算:檢索、插入、刪除、更新、排序
資料型別(data type):乙個值的集合和定義在這個值集上的一組操作的總稱。
按」值「的不同特性劃分
①原子型別(非結構型別):其值不可分解,例如基本型別(整型、實型、字元型和列舉型)以及指標型別和空型別等簡單型別
②結構型別:其值可由若干個分量(或成分)按某種結構組成,它的分量可以是非結構型的,也可以是結構型的。例如陣列、結構等。
演算法:對特定問題的求解步驟的一種描述,指令的有限序列。
特性- 有窮性:演算法在執行有窮步後能結束
- 確定性:每一指令有確切的含義,無二義
- 可行性:每一操作都可以通過已經實現的基本運算執行有限次來實現
- 輸入:零個或多個人輸入
- 輸出:乙個或多個輸出
演算法的評價標準
(1)正確性:對於一切合法的輸入資料,該演算法經過有限時間的執行都能得到正確的結果;
(2)時間複雜性:執行演算法所耗費的時間;
(3)空間複雜性執行演算法所耗費的儲存空間;
(4)易於理解、易於程式設計、易於除錯。
時間複雜度
執行時間=演算法中每條語句執行時間之和
每條語句執行時間=頻度*語句執行一次所需時間
但是不同計算機系統執行一次基本操作的時間是千差萬別,不能用乙個統一的標準來衡量
(漸進)時間複雜度:t(n)=o(f(n))
n-問題規模
資料結構與演算法概述
研一結束了,馬上要進入研二的生活了。接下來就要進入了找工作的階段。在網上查詢了各種找工作的面經,發現資料結構是應聘軟體行業必考的內容之一,並在資料結構在對自己的軟體設計水平的提高也有很大的幫助,所以從今天開始將進行資料結構的學習。在學習一樣東西之前,先要明白其含義。資料結構的定義如下 我們如何把現實...
資料結構與演算法概述
資料型別 程式語言中的資料型別是指具有預定義值得乙個資料集合,常見的資料型別有 整數型,浮點型,字串,字元等。一般有兩種資料型別 系統定義的資料型別 基本資料型別 使用者自定義的資料型別 使用者自定義的類,可以將系統定義的資料型別進行組合封裝成使用者需要的資料型別 class student 資料結...
資料結構與演算法概述
從問題入手比如人狼羊菜過河問題。問題抽象 首先需要分析和抽象問題的需求和限制,簡歷問題模型。目的 把人狼羊菜運到對岸 條件 資料抽象 接下來我們需要恰當的資料結構來描述這個數學模型。簡單排列組合我們發現系統一共有16種狀態 包括空狀態 但是按照條件我們能夠踢出 狼羊,人菜 與前者互補狀態 羊菜,人狼...