數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)篇

什么是數(shù)據(jù)結(jié)構(gòu)阀蒂?

數(shù)據(jù)結(jié)構(gòu)是指一組數(shù)據(jù)的存儲結(jié)構(gòu)。

什么是算法弟蚀?

算法是操作一組數(shù)據(jù)的方法蚤霞。

10個常用的數(shù)據(jù)結(jié)構(gòu)

數(shù)組、鏈表粗梭、棧争便、隊列、散列表断医、二叉樹滞乙、堆奏纪、跳表、圖斩启、Trie樹

10個算法

遞歸序调、排序、二分查找兔簇、搜索发绢、哈希算法、貪心算法垄琐、分治算法边酒、回溯算法、動態(tài)規(guī)劃狸窘、字符串匹配算法

數(shù)據(jù)結(jié)構(gòu)和算法概括

時間復(fù)雜度

大O時間復(fù)雜度表示法

所有代碼的執(zhí)行時間T(n)與每行代碼的執(zhí)行次數(shù)n成正比;

T(n) = O(f(n)

T(n)代表代碼的執(zhí)行時間墩朦;n表示數(shù)據(jù)規(guī)模;f(n)表示每行代碼執(zhí)行的次數(shù)總和翻擒;

O表示代碼的執(zhí)行時間T(n)與表達(dá)式f(n)成正比氓涣;

公式中的低階、常量陋气、系數(shù)都可以忽略劳吠;

大O時間復(fù)雜度(簡稱時間復(fù)雜度)

大O時間復(fù)雜度實際上并不是具體表示代碼真正的執(zhí)行時間,而是表示代碼的執(zhí)行時間隨數(shù)據(jù)規(guī)模增長的變化趨勢巩趁,所以也叫漸進(jìn)時間復(fù)雜度痒玩。、

時間復(fù)雜度分析

* 只關(guān)注循環(huán)執(zhí)行次數(shù)最多的那段代碼晶渠;

* 加法法則:總復(fù)雜度等于量級最大的那段代碼的復(fù)雜度凰荚;

* 乘法法則:嵌套代碼復(fù)雜度等于嵌套內(nèi)外代碼復(fù)雜度的乘積;

幾種常見的時間復(fù)雜度分析

常量階:O(1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 指數(shù)階:O(2n)#2的n次方

對數(shù)階:O(logn)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?階乘階:O(n!)

線性階:O(n)

線性對數(shù)階:O(nlogn)

平方階:O(n2)褒脯、立方階:O(n3)便瑟、k次方階:O(nk)


對于上面羅列的復(fù)雜度量級,可以粗略的分為兩類番川,多項式量級非多項式量級到涂。非多項式量級只有兩個:指數(shù)階和階乘階;

把時間復(fù)雜度為多項式量級的算法問題叫做NP(Non-Deterministic Polyomial颁督,非確定多項式)問題践啄;

O(1)

只要代碼的執(zhí)行時間不隨著n的增大而增長,這樣的時間復(fù)雜度都計作O(1)沉御∮旆恚或者說:一般情況下,只要算法中不存在循環(huán)語句、遞歸語句伐谈,即使有成千上萬行的代碼烂完,其時間復(fù)雜度也是O(1);

O(logn)诵棵、O(nlogn)

對數(shù)階時間復(fù)雜度非常常見抠蚣,同時也是最難分析的一種。如常用的歸并排序履澳、快速排序的時間復(fù)雜度都是O(nlogn)嘶窄;

空間復(fù)雜度分析

時間復(fù)雜度的全稱是漸進(jìn)時間復(fù)雜度,表示算法的執(zhí)行時間與數(shù)據(jù)規(guī)模之間的增長關(guān)系距贷;空間復(fù)雜度全稱就是漸進(jìn)空間復(fù)雜度柄冲,表示算法的存儲空間與數(shù)據(jù)規(guī)模之間的增長關(guān)系;

我們常用的空間復(fù)雜度就是O(1)储耐、O(n)羊初、O(n2),像O(logn)什湘、O(nlogn)這樣的對數(shù)階復(fù)雜度平時用不到;


淺析最好晦攒、最壞闽撤、平均、均攤時間復(fù)雜度

最好情況時間復(fù)雜度

在最理想的情況下脯颜,執(zhí)行這段代碼的時間復(fù)雜度哟旗;

最壞情況時間復(fù)雜度

在最糟糕的情況下,執(zhí)行這段代碼的時間復(fù)雜度栋操;

平均情況時間復(fù)雜度

平均時間復(fù)雜度的全稱應(yīng)該叫做加權(quán)平均時間復(fù)雜度或者期望時間復(fù)雜度闸餐;

均攤時間復(fù)雜度以及它對應(yīng)的分析方法,攤還分析(或者叫平攤分析)

對于一個數(shù)據(jù)結(jié)構(gòu)進(jìn)行一組連續(xù)操作中矾芙,大部分情況下時間復(fù)雜度都很低舍沙,只有個別情況下時間復(fù)雜度比較高,而且這些操作之間存在前后連貫的時序關(guān)系剔宪,這個時候拂铡,我們就可以將這一組操作放在一塊分析,看是否能將較高時間復(fù)雜度那次操作的耗時葱绒,平攤到其他那些時間復(fù)雜度比較低的操作上感帅。而且,再能夠應(yīng)用均攤時間復(fù)雜度分析的場合地淀,一般均攤時間復(fù)雜度就等于最好情況時間復(fù)雜度失球;均攤時間復(fù)雜度是一種特殊的平均時間復(fù)雜度;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帮毁,一起剝皮案震驚了整個濱河市实苞,隨后出現(xiàn)的幾起案子璧微,更是在濱河造成了極大的恐慌,老刑警劉巖硬梁,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件前硫,死亡現(xiàn)場離奇詭異,居然都是意外死亡荧止,警方通過查閱死者的電腦和手機屹电,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跃巡,“玉大人危号,你說我怎么就攤上這事∷匦埃” “怎么了外莲?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兔朦。 經(jīng)常有香客問我偷线,道長,這世上最難降的妖魔是什么沽甥? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任声邦,我火速辦了婚禮,結(jié)果婚禮上摆舟,老公的妹妹穿的比我還像新娘亥曹。我一直安慰自己,他們只是感情好恨诱,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布媳瞪。 她就那樣靜靜地躺著,像睡著了一般照宝。 火紅的嫁衣襯著肌膚如雪蛇受。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天硫豆,我揣著相機與錄音龙巨,去河邊找鬼。 笑死熊响,一個胖子當(dāng)著我的面吹牛旨别,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汗茄,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼秸弛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起递览,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤叼屠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绞铃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镜雨,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年儿捧,在試婚紗的時候發(fā)現(xiàn)自己被綠了荚坞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡菲盾,死狀恐怖颓影,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懒鉴,我是刑警寧澤诡挂,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站临谱,受9級特大地震影響璃俗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吴裤,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一旧找、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧麦牺,春花似錦、人聲如沸鞭缭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岭辣。三九已至吱晒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沦童,已是汗流浹背仑濒。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偷遗,地道東北人墩瞳。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像氏豌,于是被迫代替她去往敵國和親喉酌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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

  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的運算泪电,而且確保經(jīng)過這...
    Winterfell_Z閱讀 5,691評論 0 13
  • 算法是解決特定問題求解步驟的描述般妙,在計算機中表現(xiàn)為指令的有限序列,并且每條指令表示一個或多個操作相速。 為了解決某個或...
    開心糖果的夏天閱讀 310評論 0 4
  • 父類實現(xiàn)深拷貝時碟渺,子類如何實現(xiàn)深度拷貝。父類沒有實現(xiàn)深拷貝時突诬,子類如何實現(xiàn)深度拷貝苫拍。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 995評論 1 7
  • ? 深拷貝同淺拷貝的區(qū)別:淺拷貝是指針拷貝,對一個對象進(jìn)行淺拷貝攒霹,相當(dāng)于對指向?qū)ο蟮闹羔樳M(jìn)行復(fù)制怯疤,產(chǎn)生一個新的指向...
    WSGNSLog閱讀 1,250評論 0 1
  • [數(shù)據(jù)結(jié)構(gòu)與算法之美:如何分析、統(tǒng)計算法的執(zhí)行效率和資源消耗催束?(03)] 一集峦、如何分析、統(tǒng)計算法的執(zhí)行效率和資源消...
    luke_閱讀 908評論 0 0