通常開發(fā)人員在寫程序的時(shí)候,往往是把已經(jīng)設(shè)計(jì)好或者構(gòu)思好的運(yùn)算邏輯,直接用編程語言翻譯出來。程序能順利編譯通過,那是很令人高興的事情。如果此時(shí)程序的運(yùn)行時(shí)間還能接受,就會(huì)沉浸在寫代碼的成就感當(dāng)中,常常在這個(gè)過程中忽略代碼的優(yōu)化。只有當(dāng)程序運(yùn)行速度受到影響時(shí),才回過頭去考慮優(yōu)化的事情。
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的成都電信服務(wù)器托管,四川各地服務(wù)器托管,成都電信服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:13518219792
什么是算法的時(shí)間復(fù)雜度
時(shí)間復(fù)雜度是開發(fā)人員用來衡量應(yīng)用程序算法優(yōu)劣的主要因素。客觀地說,算法的優(yōu)劣除了和時(shí)間復(fù)雜度有關(guān),還與空間復(fù)雜度密切相關(guān)。而隨著設(shè)備硬件配置的不斷提升,對中小型應(yīng)用程序來說,對算法的空間復(fù)雜度的要求也寬松了不少。不過,在當(dāng)今 Web2.0 時(shí)代,對應(yīng)用程序的時(shí)間復(fù)雜度卻有了更高的要求。
什么是算法的時(shí)間復(fù)雜度呢?概要來說,是指從算法中選取一個(gè)能代表算法的原操作,以原操作重復(fù)執(zhí)行的次數(shù)作為算法的時(shí)間量度。影響時(shí)間復(fù)雜度的因素有兩個(gè):一是原操作的執(zhí)行時(shí)間,二是原操作因控制結(jié)構(gòu)引起的執(zhí)行次數(shù)。要把算法的時(shí)間復(fù)雜度降下來,降低原操作的執(zhí)行次數(shù)是較為容易的方法,也是主要方法。本文所講述的方法,是通過巧用 PHP 的數(shù)組,降低原操作的執(zhí)行次數(shù),從而達(dá)到降低算法時(shí)間復(fù)雜度的需求,和大家分享。
算法的時(shí)間量度記作 T(n)=O(f(n)),它表示算法中基本操作重復(fù)執(zhí)行的次數(shù)是問題規(guī)模 n 的某個(gè)函數(shù) f(n),也就是說隨著問題規(guī)模 n 的增大,算法執(zhí)行時(shí)間的增長率和 f(n) 的增長率相同。多數(shù)情況下,我們把最深層循環(huán)內(nèi)的語句作為原操作來討論算法的時(shí)間復(fù)雜度,因?yàn)樗膱?zhí)行次數(shù)和包含它的語句的頻度相同。一般情況下,對一個(gè)問題只需選擇一種基本操作來討論算法的時(shí)間復(fù)雜度即可。有時(shí)也需要同時(shí)考慮多種基本操作。
在 Web 開發(fā)中,通常一個(gè)功能的執(zhí)行時(shí)間或響應(yīng)時(shí)間,不僅僅跟服務(wù)器的響應(yīng)能力、處理能力有關(guān),還涉及第三方工具的交互時(shí)間,如對數(shù)據(jù)庫的鏈接時(shí)間和對數(shù)據(jù)進(jìn)行存取的時(shí)間。因而在選定原操作是,需要綜合考慮應(yīng)用程序各方面的因素,以最大影響程序執(zhí)行時(shí)間的操作為原操作,來衡量算法的時(shí)間復(fù)雜度。也就是說,需要程序員在編寫代碼的時(shí)候,對重要操作的執(zhí)行時(shí)間能有基本的認(rèn)識(shí)。
常見程序中的時(shí)間復(fù)雜度分析
我們先看一個(gè)例子,假設(shè) Web 程序的開發(fā)語言是 PHP,后臺(tái)采用 DB2 數(shù)據(jù)庫,PHP 通過 PEAR::DB 數(shù)據(jù)抽象層來實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。
實(shí)例
數(shù)據(jù)庫中有學(xué)生表 Students(見表 1),班級(jí)表 Classes(見表 2),學(xué)生成績表 Scores(見表 3),需要在 Web 頁面中顯示出本次考試數(shù)學(xué)成績超過 90 分的同學(xué)姓名和所在班級(jí)。
當(dāng)前文章:PHP中巧用數(shù)組降低程序的時(shí)間復(fù)雜度
文章路徑:http://www.rwnh.cn/article46/schseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、關(guān)鍵詞優(yōu)化、小程序開發(fā)、品牌網(wǎng)站制作、網(wǎng)站營銷、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)