一、演算法,是軟體的根本要素,如貨幣可購買商品一樣
演算法可以獲得軟體的其他方面的提公升
演算法的學習應先從分析已有的演算法開始,
二、排序為演算法中最傳統的基礎的演算法
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萬起步年薪,簡直喪...