抽象:描述資料型別的方法不依賴於具體實現
1. 解決問題方法的效率,跟資料的組織方式有關
2. 解決問題方法的效率,跟空間的利用效率有關
//迴圈呼叫
void printn (
int n)
return;}
//遞迴呼叫
void printn (
int n)
return;}
//列印輸出
#include
void printn (
int n)
;int main (
)
3. 解決問題方法的效率,跟演算法的巧妙程度有關係#include
#include
clock_t start, stop;
/*clock_t是clock()函式返回的變數型別*/
double duration;
intmain()
double f2 (
int n,
double a,
double x)
f(x
)=∑i
=0ni
⋅xif(x) = \sum_^
f(x)=∑
i=0n
i⋅x
i , x = 1.1;
#include
#include
#include
clock_t start, stop;
double duration;
#define maxn 10
//多項式的最大項
#define maxk 1e7
//被測函式最大重複呼叫次數
doublef1(
int n,
double a,
double x)
;doublef2(
int n,
double a,
double x)
;int
main()
「矩陣「抽象資料型別定義
}抽象:並不關係list到底是陣列還是鍊錶,也不關心swap是用函式還是用巨集去實現。
分析演算法時關注的複雜度
複雜度的漸進表示法
分析時間複雜度
若t(n) 是關於k階多項式,那麼t(n
)=θ(
nk)t(n) = \theta(n^k)
t(n)=θ
(nk)
乙個for
迴圈的時間複雜度等於迴圈次數乘以迴圈體**的複雜度
if-else
結構的複雜度取決於if
的條件潘敦複雜度和兩個分支部分的複雜度,總體複雜度取三者中的最大
說明:
解法:演算法一: 複雜度t(n
)=o(
n3)t( n ) = o( n^3 )
t(n)=o
(n3)
int
maxsubseqsum1
(int a,
int n )
/* j迴圈結束 */
}/* i迴圈結束 */
return maxsum;
return maxsum;
}
演算法二:複雜度t(n
)=o(
n2)t( n ) = o( n^2 )
t(n)=o
(n2)
int
maxsubseqsum2
(int a,
int n )
/* j迴圈結束 */
}/* i迴圈結束 */
return maxsum;
}
演算法三:分而治之 複雜度t(n
資料結構與演算法入門(1) 基本概念
資料結構與演算法入門 1 基本概念 舉個例子 假如我們需要建立乙個學生資料管理系統。我們需要收集學生的資料。建立的目標資料庫應該如下表所示 學生資訊 學生 一 學生 二 學生 三 學生 四 在學生資料管理系統中,資料元素為每乙個學生的資訊 如 學生一,學生二,學生三分別為三個資料元素 每乙個學生的資...
資料結構與演算法基本概念
一 基本資料結構 基本資料結構的定義 特性 運算 演算法。基本資料結構的分類 邏輯結構 1 線性結構 線性表 棧 佇列 雙佇列 陣列 廣義表 串 2 非線性結構 樹 二叉樹 圖 網 儲存結構 1 順序儲存 向量 一維陣列 2 鏈式儲存 鍊錶 二 演算法 查詢 順序 折半 分塊 雜湊 二叉排序樹 排序...
資料結構與演算法 基本概念
課前導入 如何在書架上擺放圖書,擺放圖書有兩個相關操作。操作1 新書如何插入書架 操作2 如何找到需要的書 方法1 隨便放 一本本挨著放 操作1 直接放在最後面 操作2 一本本的找 方法2 按照書名的首字母排序 操作1 根據新書的首字母 二分查詢該插入的位置 移出空位 操作2 使用二分查詢 方法3 ...