@資料結構與演算法基礎(一)b 演算法和演算法分析
1.1 定義:
對特定問題**求解方法和步驟**的一種描述
**指令**的**有限序列** (指令表示乙個或多個操作)
1.2描述:
- 自然語言 : 英語 中文
- 流程圖 : 傳統框圖 ns流程圖
1.3 演算法與程式
演算法考慮如何從輸入轉換為輸出,乙個問題有多個演算法
程式 用某種語言對演算法具體實現
*程式= 資料結構+ 演算法
資料結構通過演算法實現操作
演算法根據資料結構設計程式*
1.4 演算法特性
- 有窮性
- 確定性 : 每條指令必須有確切的含義
- 可行性
- 輸入: 1個或0個輸入
- 輸出: 1個或多個輸出
1.5 演算法設計要求
- 正確性 : 不含語法錯誤/滿足典型,有刁難的資料
- 可讀性 : 便於人閱讀交流,其次才為了計算機執行
- 健壯性 : 非法資料,作出反應進行處理
- 高效性 : 盡量少的時間和盡量低的儲存需求
1.6 評價演算法
假設執行每條語句所需的時間均為單位時間
轉化為對演算法中所有語句的執行次數,即頻度之和
比較 數量級
- 空間效率 : 儲存空間
- 二者有時是矛盾的
1.6 演算法時間複雜度
定義:
演算法中基本語句重複執行次數是 問題規模n 的某個函式f(n)
演算法的時間量度記作 :
t(n) = o(f(n)) -----**最高次**
例:x=0;y=0;
for(int k=0;k時間複雜度是 由巢狀最深層語句的頻度決定的
注意: 有時,演算法中基本操作重複執行的次數還隨問題的輸入 資料集不同而不同
一般總考慮最壞的時間複雜度
3.1定義: 演算法所需存貯空間的度量
記作: s(n) = o(f(n))
3.2 例
資料結構與演算法 演算法基礎一
1 2 插入排序,在前k個元素有序的前提下插入arr k 將前面有序元素依次與arr k 比較 移動,3 最終將arr k 插入有序元素中的合適位置,形成k 1個有序元素4 5 org.junit.test 6public void testinsert 13 arr j temp 14 15 1 ...
資料結構與演算法基礎
電腦科學的研究物件是問題 解決問題的過程,以及通過該過程得到解決方案。演算法是具有有限步驟的過程,依照這個過程能解決問題。因此,演算法就是解決方案。電腦科學是研究問題及其解決方案,以及研究目前無解的問題的科學。可以簡答的認為電腦科學就是研究演算法的科學。抽象資料元素 沒有實際含義的資料元素,例如 a...
資料結構與演算法基礎
一 資料結構概述 資料結構的主要任務是通過分析資料物件的結構特徵,包括邏輯結構及資料物件之間的關係,然後把邏輯結構表示成計算機課實現的物理結構,從而便於計算機處理。概念術語 二 資料的邏輯結構與物理結構 邏輯結構 logical structure 是指在資料物件中資料元素之間的相互關係。資料元素之...