Algorithm Course Review(1.1)
算法課要考試了。沒想到一晃就到學期末了。一開始是打算邊上課邊整理算法的學習筆記的,結果拖到現在了。如果現在復習的時候不整理,估計以后都不會整理了。那就現在整理吧。
課本,算法設計技巧與分析。
先來看第一章,主要內容是復雜性的概念和分析。
為了分析算法的復雜性,提出了計算時間復雜性和空間復雜性的方法。對于時間復雜性,計數元運算操作的次數。元運算如算數運算,包括加減乘除,還有比較和邏輯運算,賦值運算,包括遍歷表或樹的指針賦值。對于空間復雜性,計數用到的存儲單元,不包括分配用來存儲輸入的空間。
復雜性是相對于問題的輸入規模而言的。當輸入是一個列表的時候,輸入規模是列表元素的個數,而當輸入為一個整數n的時候,分析中有時候把n的位數當作輸入規模。
復雜性的表示有四種符號,notation,這個單詞是需要記住的。當初因為不知道notation被人鄙視了。比較常見的是O符號,它提供運行時間的一個上界,然后就是大omega符號,在運行時間的常數因子內提供一個下界。還有就是大theta符號,它給出算法運行時間增長率的一個精確描述。可以認為O類似于<=,大omega類似于>=,而大theta類似于=。還有一個是小o符號,表示低階的關系。
接著討論了計算復雜性的幾種方法。一個是對于迭代類的算法,計算迭代次數,而對于遞歸,分治之類的算法,使用遞歸公式,還有一種方法是計算基本運算的頻度,就是選一個基本運算,然后看基本運算的次數。
復雜度的順序1<log(log(n)) < log(n) < n^1/2 < n < nlog(n) < n^2 < 2^n < n! < 2^(n^2).
計算復雜性也分為幾種不同的情況。算法中有條件語句的時候,那么不同的輸入會使的運行時間也不同,于是就分為最壞情況,和一般情況。平均情況的分析就會涉及到概率了,這個會比較麻煩。
計算復雜性在這一章就這些內容了,這一章還介紹了幾種經典的排序算法,并給出了時間復雜性分析。接下來整理這些經典排序算法。
?
轉載于:https://www.cnblogs.com/Frandy/archive/2012/05/12/algorithm_course_1_1.html
總結
以上是生活随笔為你收集整理的Algorithm Course Review(1.1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字证书及在WCF中的应用
- 下一篇: ASP.NET dropdownlist