算法

算法是解決特定問題求解步驟的描述,在計算機(jī)中表現(xiàn)為指令的有限序列篷帅,并且指令表示一個或多個操作。
一個簡單的加法算法

int i竿滨,sum=0权埠,n=100;
sum = (1+n)*n/2;
printf("%d",sum);
  • 算法定義

算法是解決特定問題求解步驟的描述担孔,在計算機(jī)中表現(xiàn)為指令的有限序列椭蹄,并且每條指令表示一個或多個操作檬贰。

  • 算法的特性

    • 輸入輸出
      • 算法具有零個或多個輸入惭嚣。
      • 算法至少有一個或多個輸出遵湖。
    • 有窮性
      指算法在執(zhí)行有限的步驟之后,自動結(jié)束而不會出現(xiàn)無限循環(huán)晚吞,并且每一步驟在可接受的時間內(nèi)完成
    • 確定性
      算法的每一步驟都具有確定的含義延旧,不會出現(xiàn)二義性。
    • 可行性
      算法的每一步都必須是可行的槽地,也就是說迁沫,每一步都能通過執(zhí)行有限次數(shù)完成。
  • 算法設(shè)計的要求

    • 正確性
      算法的正確性是指算法至少應(yīng)該具有輸入捌蚊,輸出和加工處理無歧義性集畅,能正確反應(yīng)問題的需求,能夠得到問題的正確答案缅糟。
      1.算法程序沒有語法錯誤
      2.算法程序?qū)τ诤戏ǖ妮斎霐?shù)據(jù)能夠產(chǎn)生滿足要求的輸出結(jié)果挺智。
      3.算法程序?qū)τ诜欠ǖ妮斎霐?shù)據(jù)能夠得出滿足規(guī)格說明的結(jié)果。
      4.算法程序?qū)τ诰倪x擇的窗宦,甚至刁難的測試數(shù)據(jù)都有滿足要求的測試結(jié)果赦颇。
      一般租到層次3就行。
    • 可讀性
      算法設(shè)計的另一目的是為了便于閱讀赴涵,理解和交流媒怯。
    • 健壯性
      當(dāng)輸入數(shù)據(jù)不合法時,算法也能做出相關(guān)處理髓窜,而不是產(chǎn)生異成劝或莫名其妙的結(jié)果。
    • 時間效率高和存儲量低
  • 算法效率的度量方法寄纵。

    • 事后統(tǒng)計方法
      這種方法主要是通過設(shè)計好的測試程序和數(shù)據(jù)鳖敷,利用計算機(jī)計時器對不同算法編制的程序的運行時間進(jìn)行比較,從而確定算法效率的高低程拭。
      • 實際上因為哄陶,編寫測試程序復(fù)雜,硬件不同導(dǎo)致時間不同哺壶,測試數(shù)據(jù)的差異大屋吨,設(shè)計困難蜒谤,一般不考慮用這個方法。
    • 事前分析估算方法
      在計算機(jī)程序編制前至扰,依據(jù)統(tǒng)計方法對算法進(jìn)行估算鳍徽。有以下因素
      • 算法采用的策略、方法敢课。
      • 編譯產(chǎn)生的代碼質(zhì)量阶祭。
      • 問題的輸入規(guī)模。
      • 機(jī)器執(zhí)行指令的速度直秆。
    • 拋開計算機(jī)硬件濒募,軟件有關(guān)的因素,一個程序的運行時間圾结,依賴于算法的好壞和問題的輸入規(guī)模瑰剃。
  • 函數(shù)的漸近增長

給定兩個函數(shù)f(n)和g(n),如果存在一個整數(shù)N筝野,使得對于所有n>N,f(n)總是比g(n)大晌姚,那么,我們說f(n)的增長漸近快于g(n)歇竟。
實際上就是最高項越大越復(fù)雜 n3>n2挥唠。

  • 算法時間復(fù)雜度

    • 算法時間復(fù)雜度定義
      在進(jìn)行算法分析是,語句總的執(zhí)行次數(shù)T(n)是關(guān)于問題規(guī)模n的函數(shù)焕议,進(jìn)而分析T(n)隨n的變化情況并確定T(n)的數(shù)量級宝磨。算法的時間復(fù)雜度,也就是算法的時間度量盅安,記作:T(n) =O(F(n)).它表示隨問題規(guī)模n的增大唤锉,算法執(zhí)行時間的增長率和f(n)的增長率相同,稱作算法的漸近時間復(fù)雜度宽堆,簡稱為時間復(fù)雜度腌紧。其中f(n)是問題規(guī)模n的某個函數(shù)茸习。
      O(1)叫常數(shù)階畜隶、O(n) 叫線性階、O(n^2)叫做平方階号胚,當(dāng)然籽慢,還有其他的一些階,我們之后會介紹
    • 推導(dǎo)大O階方法
      1.用常數(shù)1取代運行時間中所有加法常數(shù)
      2.在修改后的運行次數(shù)函數(shù)中猫胁,只保留最高階項箱亿。
      3 .如果最高階項存在且不是1,則去除與這個項相乘的常數(shù)弃秆。
      得到的結(jié)果就是大O階届惋。
    • 常數(shù)階
      只要執(zhí)行的單個單元髓帽,最高項也是常數(shù),則都寫成O(1)
    • 線性階
      就是循環(huán)一次的差不多脑豹,O(n)郑藏;
    • 對數(shù)階
        while(count<n){
        count = count * 2; 
        }```
      
    每次乘以2之后都更接近n
    2^n=n;
    所以是log(2) n底數(shù)是2.
    這個循環(huán)的復(fù)雜度也是O(log(2) n).
    • 平方階
      O(n^2)
  • 常見的時間復(fù)雜度

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  • 最壞情況與平均情況

    • 最壞情況運行時間是一種保證,那就是運行時間將不會再壞了瘩欺,再應(yīng)用中必盖,這是一種最重要的需求,通常俱饿,除非特別指定歌粥,我們提到的運行時間都是最壞情況的運行時間。
    • 平均運行時間是所有情況中最有意義的拍埠,因為它是期望的運行時間失驶。
  • 算法空間復(fù)雜度

算法空間復(fù)雜度通過計算算法所需的存儲空間實現(xiàn),算法空間復(fù)雜度的計算公式記作:S(n) = O(f(n)).其中械拍,n為問題的規(guī)模突勇,f(n)為語句關(guān)于n所站存儲空進(jìn)的函數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坷虑,一起剝皮案震驚了整個濱河市甲馋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迄损,老刑警劉巖定躏,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芹敌,居然都是意外死亡痊远,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門氏捞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碧聪,“玉大人,你說我怎么就攤上這事液茎〕炎耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵捆等,是天一觀的道長滞造。 經(jīng)常有香客問我,道長栋烤,這世上最難降的妖魔是什么谒养? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮明郭,結(jié)果婚禮上买窟,老公的妹妹穿的比我還像新娘丰泊。我一直安慰自己,他們只是感情好始绍,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布趁耗。 她就那樣靜靜地躺著,像睡著了一般疆虚。 火紅的嫁衣襯著肌膚如雪苛败。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天径簿,我揣著相機(jī)與錄音罢屈,去河邊找鬼。 笑死篇亭,一個胖子當(dāng)著我的面吹牛缠捌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播译蒂,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼曼月,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柔昼?” 一聲冷哼從身側(cè)響起哑芹,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捕透,沒想到半個月后聪姿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡乙嘀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年末购,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虎谢。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡盟榴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婴噩,到底是詐尸還是另有隱情擎场,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布讳推,位于F島的核電站顶籽,受9級特大地震影響玩般,放射性物質(zhì)發(fā)生泄漏银觅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一坏为、第九天 我趴在偏房一處隱蔽的房頂上張望究驴。 院中可真熱鬧镊绪,春花似錦、人聲如沸洒忧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熙侍。三九已至榄鉴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛉抓,已是汗流浹背庆尘。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留巷送,地道東北人驶忌。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像笑跛,于是被迫代替她去往敵國和親付魔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容