演算法導論學習1

2021-05-25 07:08:48 字數 767 閱讀 5364

第一章:演算法在計算中的作用

演算法的定義:簡單的說就是定義良好的計算過程,由輸入得到輸出!

演算法的作用:應用非常廣泛,許多問題都涉及到演算法!

演算法的重要性:是否擁有紮實的演算法知識和技術基礎,是區分真正熟練的程式設計師與新手的一項重要特徵。

第二章

演算法入門

學習演算法的目的,不僅僅是很快理解演算法然後編出相應的程式,很重要的一點是演算法的設計上面,因為設計演算法要考慮到比如時間複雜度,空間複雜度等因素,而會不會正確分析,事先估計演算法的這些因此,也是非常重要的,這也是演算法導論這本書重點介紹的乙個內容!

插入排序是對少量元素進行排序的有效演算法!插入排序的關鍵在於,還是利用原來的陣列,進行增量排序,首先通過比較後面的元素與已經排好順序的陣列的元素,將當前比較的元素插入到適當的位置,插入的過程其實就是移動陣列元素的過程!

其實現程式如下:

迴圈不變式和插入排序的正確性分析:

迴圈不變式的性質:(1

)初始化:在第一輪迴圈之前,應該正確。在第一次迴圈之前,已經排列好的子陣列

a[1]

,當然正確。(2

)保持:如果迴圈的某一次迭代開始前正確,那麼下一次迭代開始前也應該是正確的。下標

j代表要插入的元素,在每一次迴圈結束後,內迴圈代表的子陣列的元素按照順序排列好,外迴圈剩餘的元素則是剩餘沒有排好順序的,整個陣列的元素也是不變的,當然除了順序!因此可以保持在迴圈迭代過程中的這個性質。(3

)終止:迴圈全部結束後,陣列已經全部排列好順序!

演算法導論學習筆記 (1)

乙個acm若菜,趁著acm淡季,開始學習演算法導論了,經過一年的acm學習,逐漸的發現,學東西,深入才是王道,以前學習乙個演算法,總是看懂了就開始做題,到後來才發現很多題目,會演算法,卻不知道是用這個演算法,這就是演算法理解的不到位的後果,從今天開始,定下目標 1.深入系統的學習演算法,2.學會紙上...

《演算法導論》學習筆記(1)

時間複雜度 time complexity 0,1,1,2,3,5,8,13,21,34 數列中每個數都是其兩個直接前項的和。f nf fn 的生成規則 f n left f f n 1 1 n 1 0 n 0 end right.fn fn 1 fn 1 10 n 1n 1n 0 fibonacc...

演算法導論 排序演算法學習(1)

插入排序有點類似於我們打牌時整理手牌的過程,以左手拿牌,右手起牌為例。左手上面的牌,總是按照從小到大 從大到小 的順序排列,而右手拿上來的牌則根據大小在左手選擇位置插入,從而依舊保證了左手手牌依然是有序的。void insertsort int array,int length array j 1 ...