C語言算法的定義及分析詳解
算法的定義
算法是一系列良定義的計算步驟
算法和程序的區(qū)別
算法
算法是指解決問題的一種方法或一個過程。
算法是若干指令的有窮序列,滿足性質(zhì):
1.輸入:有外部提供的量作為算法的輸入。
2.輸出:算法產(chǎn)生至少一個量作為輸出。
3.確定性:組成算法的每條指令是清晰,無歧義的。
4.有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時間也是有限的。
程序
1.程序是算法用某種程序設(shè)計語言的具體實現(xiàn)。
2.程序可以不滿足算法的性質(zhì)(4)。
3.例如操作系統(tǒng),是一個在無限循環(huán)中執(zhí)行的程序,因而不是一個算法。
4.操作系統(tǒng)的各種任務(wù)可看成是單獨的問題,每一個問題由操作系統(tǒng)中的一個子程序通過特定的算法來實現(xiàn)。該子程序得到輸出結(jié)果后便終止。
算法的性質(zhì)
有窮性:算法必須在有限步驟后終止
確定性:算法必須是沒有歧義的
可行性:可以機(jī)械的一步步執(zhí)行
算法的表示
自然語言、編程語言、偽代碼
算法的分析
分析原則
1.統(tǒng)一機(jī)器性能
2.情況最壞分析
算法運行時間僅依賴于輸入規(guī)模n,表示為T(n)
漸進(jìn)分析
漸進(jìn)記號
常用的復(fù)雜性函數(shù)
算法分析基本法則
非遞歸算法:
1.for / while 循環(huán)
循環(huán)體內(nèi)計算時間循環(huán)次數(shù);
2.嵌套循環(huán)
循環(huán)體內(nèi)計算時間*所有循環(huán)次數(shù);
3.順序語句
各語句計算時間相加;
4.if-else語句
if語句計算時間和else語句計算時間的較大者。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C標(biāo)準(zhǔn)庫<assert.h>的實現(xiàn)詳解
這篇文章主要介紹了C標(biāo)準(zhǔn)庫<assert.h>的實現(xiàn),主要包括了<assert.h>的基本概念、實現(xiàn)及用法等,需要的朋友可以參考下2014-09-09C++ Boost PointerContainer智能指針詳解
智能指針是一種像指針的C++對象,但它能夠在對象不使用的時候自己銷毀掉。雖然STL提供了auto_ptr,但是由于不能同容器一起使用(不支持拷貝和賦值操作),因此很少有人使用。它是Boost各組件中,應(yīng)用最為廣泛的一個2022-11-11