1.1.1 氣泡排序
時間複雜度,用大o記號:t(n
)=o(
n2)t(n) = o(n^2)
t(n)=o
(n2)
void
bubblesort1a()
} n--;}
}
1.1.2 演算法
演算法是指基於特定的計算模型,旨在解決某一資訊處理問題而設計的乙個指令序列。演算法應該具備:輸入與輸出,基本操作、確定性與可行性,難解性,計算效率,資料結構。
時間複雜度 t(n
)t(n)
t(n)
,選用所有可能中執行時間最長者。
漸進複雜度:大o
oo記號,大ω
\omega
ω記號,大θ
\theta
θ記號,表示時,常數項和低次項可以省略。
下列複雜度函式漸進增長。
o
(log(
n))、
o(n)
、o(n
)、o(
nlog(
n))、
o(n2
)、o(
n3)、
o(2n
)o(\log(n))、o(\sqrt)、o(n)、o(n\log(n))、o(n^2)、o(n^3)、o(2^n)
o(log(n)
)、o(
n)、
o(n)
、o(n
log(n)
)、o(
n2)、
o(n3
)、o(
2n)1.4.1 線性遞迴
陣列求和,效果不好,蠻力遞迴
int
sum(
int a,
int n)
else
return
sum(a,n-1)
+ a[n -1]
;}
陣列交換
void
reverse
(int
* a,
int lo,
int hi)
}//用while可以替代遞迴
void
reverse
(int
* a,
int lo,
int hi)
求2
n2^n
2n可以體現演算法的優化。
p ow
er2(
nk)=
\right)=\left\ 2\left(n_\right)^ 2 \times 2}\quad(b_k = 1)\\ 2\left(n_\right)^ 2} \quad \quad (b_k = 1) \end\right.
power2
(nk
)=//o(r) o(log n)
inline
intsqr
(a)int
power2
(int n)
1.4.2 二分遞迴
陣列求和可以將原來陣列一分為二
int
sum(
int a,
int lo,
int hi)
}//o(logn)
斐波那契數列
見
《資料結構 C語言版 》 第1章 緒論
1.1 什麼是資料結構 1.2 基本概念和術語 資料 data 是對客觀事物的符號表示,在電腦科學中是指所有能輸入到計算機中並被電腦程式處理的符號的總稱。資料元素 data element 是資料的基本單位,在電腦程式中通常作為乙個整體進行考慮和處理。資料物件 data object 是性質相同的資...
資料結構(c )(1) 棧
最近在複習資料結構 我用的是資料結構與演算法分析c 描述 第三版的書,很不錯的書,有興趣的可以去看看 的相關知識,順便就做了些整理,以供參考。棧 stack 是限制插入和刪除操作只能在乙個位置進行的表,該位置是表的末端,稱為棧的頂。對棧的操作是push 入棧 和pop 出棧 前者相當於插入,後者則是...
第1章 緒論
1.1空間分析的概念 空間分析是地學領域的重要概念,是gis的核心功能,關於空間分析的定義目前還不夠統一 下面為較為典型的幾種 空間目標是空間分析的具體物件。空間分析目標具有空間位置,分布,形態,空間關係 距離,方位,拓撲,相關場 等基本特徵 空間關係指的是地理實體之間存在的與空間特徵有關的的關係,...