C語言算法的定義及分析詳解
算法的定義
算法是一系列良定義的計(jì)算步驟
算法和程序的區(qū)別
算法
算法是指解決問題的一種方法或一個(gè)過程。
算法是若干指令的有窮序列,滿足性質(zhì):
1.輸入:有外部提供的量作為算法的輸入。
2.輸出:算法產(chǎn)生至少一個(gè)量作為輸出。
3.確定性:組成算法的每條指令是清晰,無歧義的。
4.有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時(shí)間也是有限的。
程序
1.程序是算法用某種程序設(shè)計(jì)語言的具體實(shí)現(xiàn)。
2.程序可以不滿足算法的性質(zhì)(4)。
3.例如操作系統(tǒng),是一個(gè)在無限循環(huán)中執(zhí)行的程序,因而不是一個(gè)算法。
4.操作系統(tǒng)的各種任務(wù)可看成是單獨(dú)的問題,每一個(gè)問題由操作系統(tǒng)中的一個(gè)子程序通過特定的算法來實(shí)現(xiàn)。該子程序得到輸出結(jié)果后便終止。
算法的性質(zhì)
有窮性:算法必須在有限步驟后終止
確定性:算法必須是沒有歧義的
可行性:可以機(jī)械的一步步執(zhí)行
算法的表示
自然語言、編程語言、偽代碼
算法的分析
分析原則
1.統(tǒng)一機(jī)器性能
2.情況最壞分析
算法運(yùn)行時(shí)間僅依賴于輸入規(guī)模n,表示為T(n)
漸進(jìn)分析
漸進(jìn)記號(hào)
常用的復(fù)雜性函數(shù)
算法分析基本法則
非遞歸算法:
1.for / while 循環(huán)
循環(huán)體內(nèi)計(jì)算時(shí)間循環(huán)次數(shù);
2.嵌套循環(huán)
循環(huán)體內(nèi)計(jì)算時(shí)間*所有循環(huán)次數(shù);
3.順序語句
各語句計(jì)算時(shí)間相加;
4.if-else語句
if語句計(jì)算時(shí)間和else語句計(jì)算時(shí)間的較大者。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言實(shí)現(xiàn)旅游景點(diǎn)咨詢系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)旅游景點(diǎn)咨詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12C語言實(shí)現(xiàn)掃雷游戲詳細(xì)代碼實(shí)例
這篇文章主要介紹了C語言實(shí)現(xiàn)掃雷游戲詳細(xì)代碼實(shí)例,有感興趣的同學(xué)可以借鑒參考下2021-02-02C標(biāo)準(zhǔn)庫<assert.h>的實(shí)現(xiàn)詳解
這篇文章主要介紹了C標(biāo)準(zhǔn)庫<assert.h>的實(shí)現(xiàn),主要包括了<assert.h>的基本概念、實(shí)現(xiàn)及用法等,需要的朋友可以參考下2014-09-09C++共享智能指針shared_ptr的實(shí)現(xiàn)
在C++中沒有垃圾回收機(jī)制,必須自己釋放分配的內(nèi)存,否則就會(huì)造成內(nèi)存泄露,解決這個(gè)問題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12C++ Boost PointerContainer智能指針詳解
智能指針是一種像指針的C++對象,但它能夠在對象不使用的時(shí)候自己銷毀掉。雖然STL提供了auto_ptr,但是由于不能同容器一起使用(不支持拷貝和賦值操作),因此很少有人使用。它是Boost各組件中,應(yīng)用最為廣泛的一個(gè)2022-11-11C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果
這篇文章主要介紹的是使用C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果的代碼,非常的簡單,推薦給大家,有需要的小伙伴可以參考下。2015-03-03OpenCV利用霍夫變換實(shí)現(xiàn)交通車道線檢測
經(jīng)典霍夫變換用來檢測圖像中的直線,后來霍夫變換經(jīng)過擴(kuò)展可以進(jìn)行任意形狀物體的識(shí)別,例如圓和橢圓。本文就來利用霍夫變換實(shí)現(xiàn)交通車道線檢測,需要的可以參考一下2022-09-09C語言模擬實(shí)現(xiàn)memmove的示例代碼
memmove函數(shù)用于拷貝字節(jié),如果目標(biāo)區(qū)域和源區(qū)域有重疊的話,memmove能夠保證源串在被覆蓋之前將重疊區(qū)域的字節(jié)拷貝到目標(biāo)區(qū)域中,但復(fù)制后源內(nèi)容會(huì)被更改。本文主要介紹了C語言模擬實(shí)現(xiàn)memmove的示例代碼,需要的可以參考一下2022-12-12