c语言十七算法,算法精解十七(C语言版)
算法分析
無論是在設(shè)計(jì)還是在應(yīng)用一種廣泛認(rèn)可的算法時(shí),我們必須了解這種算法的性能如何。算法的性能可以通過很多方面評(píng)判,但是通常我們最關(guān)心的算法是運(yùn)算速度。但有些時(shí)候,如果一種算法消耗了大量的存儲(chǔ)空間,那么我們也要關(guān)注算法對(duì)內(nèi)存空間的要求。不管如何,都要一種標(biāo)準(zhǔn)和確定的方法來確定算法的性能。
之所以要了解算法的性能,去原因是很多方面的。例如:當(dāng)要解決一個(gè)問題時(shí),有很多算法可供選擇,理解算法的性能有助于區(qū)分它們,如果了解每種算法的性能就能夠有效地幫助我們解決問題。舉例來說,垃圾回收算法,它用來回收堆上分配的動(dòng)態(tài)存儲(chǔ)空間(見第3章),并且需要相當(dāng)長(zhǎng)的時(shí)間來運(yùn)行。認(rèn)識(shí)到這點(diǎn)之后,我們就能非常注意只在適當(dāng)?shù)臅r(shí)候運(yùn)用此算法,就像LISP和Java所做的那樣。
本章內(nèi)容包括:
最壞情況分析
這是大多數(shù)算法都采用的評(píng)估方法。在其他情況下,我們可能會(huì)考慮算法的平均情況和最佳情況。但是,對(duì)最壞情況的分析同樣會(huì)帶來一些好處。
O表示法
這是表示算法性能的最為常用的正式方法。在一定的條件因素下,O表示法指明一個(gè)函數(shù)的上限。
計(jì)算的復(fù)雜度
資源消耗的大小往往與算法所需要處理的數(shù)據(jù)量地方哦大小相輔相成。O表示法可以很好表示一個(gè)算法的復(fù)雜度。
最壞情況分析
在所有的情況下,絕大多數(shù)算法都會(huì)表現(xiàn)出不同的性能;并且,隨著傳人數(shù)據(jù)的不同,算法的表現(xiàn)也不相同。通常用來判斷性能的三種情況是:最佳情況、平均情況與最壞情況。對(duì)于任何算法來說,理解每種情況是如何生產(chǎn)的對(duì)于分析算法來說非常重要,因?yàn)樗惴ㄔ诓煌那闆r下性能差異可能很大。看一種線性收索的簡(jiǎn)單算法。線性搜索是一種自然的但效率低下的搜索技術(shù),它簡(jiǎn)單地從數(shù)據(jù)集的頭部順序遍歷到尾部。在最佳情況下,要查找的元素處于數(shù)據(jù)集的第一個(gè)位置,所以在僅僅遍歷一個(gè)元素之后就找到想查找的元素,然而,在最壞情況下,要查找的元素處于數(shù)據(jù)集的最后一個(gè)位置,所以必須在遍歷完所有的元素之后才能找到要查找的元素。在平均情況下,可能在數(shù)據(jù)集的中間某一個(gè)位置找到元素。
總結(jié)
以上是生活随笔為你收集整理的c语言十七算法,算法精解十七(C语言版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android UI进阶之实现listv
- 下一篇: GMF学习系列(二) 一些知识点(续2)