公開課,演算法導論筆記 自用)

2021-06-05 14:32:45 字數 1460 閱讀 7853

一、演算法,是軟體的根本要素,如貨幣可購買商品一樣

演算法可以獲得軟體的其他方面的提公升

演算法的學習應先從分析已有的演算法開始,

二、排序為演算法中最傳統的基礎的演算法

2.1插入排序

a【     j      】

將定位的j位置元素向前移動判斷插入位置,使得該陣列的前半部分有序

j取值從第二個元素開始,直到最後乙個

如a[8,2,4,9,3,6]

第一次迴圈:a[2,8,..]

第二次:a[2,4,8,...]

...之後我們做算發的評估,分析,

2.2、時間複雜度

第乙個因素來自於輸入:(如已有序,則要做的工作就很少了(逆序則為最麻煩的情況)

輸入的陣列大小。

評估最大時間。

2.3情況的分類討論

最壞情況

平均情況

最好情況

討論應對統計分布進行假設

評價條件,相對計算能力(不是所有機器都可以很好地跑演算法)

bug idea大局觀

漸進符號(theta符號):捨去低階項,和常數因子

實際設計,分析時,要結合計算能力,低速的演算法也不一定一無是處。

得出公式的方法,如何分析偽**,得出公式?

1、你實際上訪問了某個變數多少次?--迴圈便是求和符號,迴圈中所做的計算就用漸進符號分析和表示

例子中的公式寫出後,發現該公式為乙個算數級數,因此是其時間複雜度為n^2

3.1 歸併排序

將原陣列分成兩個子集,在這兩個子集中遞迴使用歸併排序,再次各分為兩個子集。。。。直到元素

個數為1

然後對有序的子集(第一次的兩個子集元素個數都為1),分別比較最小的數,並把小的,放入新的數

組當中。

時間複雜度分析:其中,t(n) =

{2t(n/2), when n>1;)老師採用直觀的遞迴樹

其中0(1)為漸進式,就是捨去低階項,和常數因子的式子

而2t(n/2)的意思是兩倍於做該陣列元素個數一半的時間量。

2分支遞迴樹的高度為lg(n),因為我高度為1從n開始,高度為2是n/2,然後n/4....

最後的葉節點個數當然是n(陣列元素個數),或者可以說是2分支*樹高2*lgn = n.

由於每一層的計算時間複雜度都是cn,所有的就是cn*lgn  因此t(n) = o(n*lgn)

公開課小結

馬上要畢業找工作了,作為小弱雞的我心裡不停再說 好慌啊好慌啊!so,跑到網易雲課堂學了幾門公開課,來這裡寫個總結,問我為什麼來csdn寫,因為我只有這乙個部落格啊 1 edp 職業生涯規劃不過若此 接下來,列舉一些我做的筆記,有些亂只能慢慢整理了。1 swot分析 strength 優勢 劣勢 we...

網路素養公開課筆記 一)

網路素養公開課筆記 一 網路素養公開課所需要 的核心討論問題 怎樣去看待網際網路的資訊。乙個新的傳播 在全球普及到 5000 萬人,需要多長的時間?其中收音機是 38年,電視是 13年,網際網路是 4年,微博是14 在中國103 家微博 使用者賬號總數已達 12億個,活躍使用者超過 1.410 萬以...

北大AI公開課筆記整理

2017年是正經的人工智慧元年,也是在這一年,人工智慧穿上華麗的外衣,正式走到了所有人的面前,幾乎每個學校的計算機學院都在搞人工智慧,每個計算機專業的學生都在訓練模型 調參。自然而然地,從去年開始,所謂演算法工程師 ai研究員這些崗位也成為意料之中的當紅炸子雞,今年更是直接給出30萬起步年薪,簡直喪...