資料結構 演算法入門

2021-08-18 23:43:41 字數 1197 閱讀 5576

演算法(algorithm):就是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或者多個操作。

資料結構與演算法的關係:單獨學習資料結構,不能理解資料結構有什麼用處。

演算法的特性:輸入和輸出(零個或多個輸入,乙個或多個輸出),有窮性,確定性,可行性

演算法設計的要求:正確性、可讀性、健壯性、時間效率高、儲存量低、

演算法效率的度量方法:這裡的演算法效率指的是執行時間

關注**的中間部分,把迴圈看成乙個整體,忽略掉頭尾迴圈判斷的開銷。

比如下面這段**:

int i,sum = 0,n = 100;//執行1次

for(i = 1,i< = n,i++)

printf("%d",sum)://執行一次

我們關注**中間部分,也就是迴圈部分,並且忽略掉頭尾迴圈判斷的開銷,也就是第二行。

測定執行時間最可靠的方法就是計算對執行時間有消耗的基本操作的執行次數。執行時間和這個計數成正比。我們在分析乙個演算法的執行時間時,重要的就是把基本操作的數量與輸入規模關聯起來,即基本操作的數量必須表示成輸入規模的函式f(n)。

函式的漸進增長:在輸入規模n沒有限制的情況下,只要超過乙個具體的數值n,這個函式就總大於另乙個,我們就稱函式是漸進增長的。

判斷乙個演算法效率時,函式的常數和其他次要項可以忽略,而更應關注主項(最高端項)的階數。

演算法時間複雜度定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級,演算法的時間複雜度,也是演算法的時間量度。記作t(n)=o(f(n)),它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱時間複雜度,一般用大寫o來體現演算法時間複雜度的記法,稱為大o記法。一般隨著n的增大,t(n)增長最慢的演算法為最優演算法。

常見的時間複雜度:

執行次數函式

階非正式用語

12o(1)

常數階2n+3

o(n)

線性階3n^2+2n+1

o(n^2)

平方階5log2 n+20

o(logn)

對數階2n+3nlog2 n+19

o(nlogn)

nlogn階

6n^3+2n^2+3n+4

o(n^3)

立方階2^n

o(2^n)

指數階

資料結構 演算法入門

公司的核心價值點起始與資料,資料可以預判趨勢,指導方向,解決實際問題,掌握了公司的資料,就掌握了公司運營和發展的命脈 是做技術的基礎中的基礎,是高技術人才的必備能力 裝逼利器 物理形式 邏輯形式 舉例子 天天生鮮中的,商品資訊,使用者資訊這些資料,有各自的組織方式,儲存起來,單個的資料是沒有意義的,...

資料結構與演算法入門 資料結構型別

資料的邏輯結構 資料的邏輯結構指資料元素之間的邏輯哦關係 和實現無關 分類一 線性結構和非線性結構 線性結構 有且只有乙個開始結點和乙個終端節點,並且所有節點都最多只有乙個直接前繼和乙個直接後繼。線性表就是乙個典型的線性結構,它有四個基本特徵 1.集合中必存在唯一的乙個 第乙個元素 2.集合中必存在...

資料結構演算法 入門(一)

1.array 陣列 2.stack queue 堆 佇列 3.priorityqueue heap 優先佇列 堆 4.linkedlist single double 列表 5.tree binary tree 樹 二叉樹 6.binary search tree 二叉搜尋樹 7.hashtabl...