數(shù)據(jù)結(jié)構(gòu)之緒論

這是數(shù)據(jù)結(jié)構(gòu)系列文章的第一篇峡谊,這是文章的列表恤煞。
注:想要學(xué)好數(shù)據(jù)結(jié)構(gòu)趾撵,掌握至少一門(mén)語(yǔ)言是必需的侄柔,這樣才能將學(xué)到的數(shù)據(jù)結(jié)構(gòu)知識(shí)加以鞏固。

文章目錄

  1. 語(yǔ)言以及代碼書(shū)寫(xiě)規(guī)范
  2. 時(shí)間復(fù)雜度和空間復(fù)雜度分析
  3. 數(shù)據(jù)結(jié)構(gòu)與算法中的一些概念

1. 語(yǔ)言以及代碼書(shū)寫(xiě)規(guī)范

  1. 語(yǔ)言其實(shí)無(wú)所謂占调,重點(diǎn)在于數(shù)據(jù)結(jié)構(gòu)的知識(shí)暂题。不同語(yǔ)言實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)算法,其實(shí)大同小異究珊。在教科書(shū)中薪者,常用的語(yǔ)言有C/C++ 和 java兩種。
  1. 這兩種語(yǔ)言在在數(shù)據(jù)結(jié)構(gòu)與算法上剿涮,轉(zhuǎn)化起來(lái)其實(shí)很簡(jiǎn)單言津,所以以后的文章攻人,可能會(huì)用到這兩種語(yǔ)言。
  2. 代碼書(shū)寫(xiě)規(guī)范:
    • 程序中用到的某些常量或者調(diào)用的函數(shù)等可以用加注釋的方式悬槽,省略其定義怀吻。
    • include語(yǔ)句可不寫(xiě)
    • 測(cè)試代碼可不寫(xiě)
    • 數(shù)據(jù)類型上,int初婆, char及其數(shù)組類型蓬坡,指針類型即可覆蓋大部分

2. 時(shí)間復(fù)雜度和空間復(fù)雜度分析

  • 其實(shí)對(duì)于一些簡(jiǎn)單的程序,時(shí)間復(fù)雜度和空間復(fù)雜度是比較簡(jiǎn)單的磅叛,但是也有難的地方屑咳,特別是算法中涉及到遞歸等比較高級(jí)的特性時(shí)。時(shí)間復(fù)雜度的考察較多弊琴。
  • 在考研中兆龙,時(shí)間復(fù)雜度的考察一般是考察排序算法中的復(fù)雜度,這只需要簡(jiǎn)單記憶或者理解記憶即可访雪。當(dāng)然详瑞,也不僅僅是這樣的掂林,也會(huì)給你一段程序臣缀,要你分析其復(fù)雜度,這就需要你有一定的分析能力了泻帮。
(1) 時(shí)間復(fù)雜度
1) 常用的時(shí)間復(fù)雜度比較關(guān)系(需要牢記):
時(shí)間復(fù)雜度的比較關(guān)系.png
2) 實(shí)例分析
  • 分析時(shí)間復(fù)雜度其實(shí)就是分析算法每個(gè)指令執(zhí)行的次數(shù)精置。而一般一行一行的代碼其實(shí)其執(zhí)行次數(shù)為常數(shù),一般不考慮锣杂,所以一般要分析的地方在循環(huán)脂倦、遞歸等地方。
  • 計(jì)算出執(zhí)行次數(shù)后元莫,一般是一個(gè)n的表達(dá)式赖阻,只需要提取式子中隨著n的變化而變化最快的那個(gè)部分文留,一般是在(1)中比較關(guān)系里的那些蹭越。
實(shí)例1:純循環(huán)的情況

這種情況只需要簡(jiǎn)單計(jì)算循環(huán)內(nèi)的指令執(zhí)行次數(shù)就行了。

實(shí)例1.png

以上代碼第一層是n次循環(huán)振劳,第二層是n - (i + 1) + 1 = n - i次循環(huán)茎截,而i是從0開(kāi)始到n - 1, 所以總的次數(shù)應(yīng)該是:

i = 0 時(shí)苇侵, target 運(yùn)行 n - 1 次
i = 1 時(shí), target 運(yùn)行 n - 2 次
...
i = n - 1 時(shí)企锌,target 運(yùn)行 0 次
所以總共次數(shù) = (n - 1) + (n - 2) + (n - 3) + ... + 0 
總共有n項(xiàng)榆浓,根據(jù)等差數(shù)列求和:sum = ((n-1) + 0) * n/ 2 = n(n-1) / 2
實(shí)例2:循環(huán)次數(shù)依賴循環(huán)內(nèi)數(shù)據(jù)變化的情況

有些題目中,循環(huán)的次數(shù)要依賴循環(huán)內(nèi)部變量的變化情況而定撕攒。

image.png

上述代碼只有一個(gè)while循環(huán)陡鹃,但是循環(huán)次數(shù)需要通過(guò)i和s計(jì)算, 1,2兩條指令會(huì)影響循環(huán)的跳出烘浦。并不是簡(jiǎn)單的自增1。

初始:i = 0, s = 0
i = 1, s += i = 1 // 1次
i = 2, s += i = 1 + 2 = 3 // 2次
i = 3, s += i = 1 + 2 + 3  = 6  // 3次
...
i = m, s += m = 1 + 2 + 3 + ... + m = m(m+1)/2   // m次

假設(shè)循環(huán)m次結(jié)束杉适,那么 s = m(m+1)/2  >= n
換一種表示方式:m(m+1)/2 + k = n谎倔, k為一個(gè)常數(shù)
則有:m*m + m + 2k -2n = 0

image.png

按照前面所說(shuō)取影響最大的一項(xiàng)做簡(jiǎn)化的規(guī)則,時(shí)間復(fù)雜度為:

image.png
實(shí)例3:遞歸的情況
image.png

遞歸的情況分析會(huì)比較難猿推,但是也有一般的套路片习。上面的代碼是歸并排序的關(guān)鍵代碼。merge函數(shù)的復(fù)雜度為O(n)蹬叭。

-> 設(shè)因?yàn)閙erge的復(fù)雜度為O(n)藕咏,所以可以假設(shè)其操作次數(shù)為cn,再假設(shè)mergesort的操作次數(shù)為f(n).
-> 實(shí)例中的規(guī)模為:j - i + 1秽五,若調(diào)用mergesort(1, n)孽查, 那么規(guī)模就是n。
-> 一個(gè)規(guī)模為n的mergesort指令 = 兩個(gè)規(guī)模為n/2的mergesort指令 + cn
即:
image.png

假設(shè)最后的問(wèn)題

(2) 空間復(fù)雜度

3. 數(shù)據(jù)結(jié)構(gòu)與算法中的一些概念

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坦喘,一起剝皮案震驚了整個(gè)濱河市盲再,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓣铣,老刑警劉巖答朋,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棠笑,居然都是意外死亡梦碗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)蓖救,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洪规,“玉大人,你說(shuō)我怎么就攤上這事循捺≌独” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵从橘,是天一觀的道長(zhǎng)念赶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)洋满,這世上最難降的妖魔是什么晶乔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮牺勾,結(jié)果婚禮上正罢,老公的妹妹穿的比我還像新娘。我一直安慰自己驻民,他們只是感情好翻具,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布履怯。 她就那樣靜靜地躺著,像睡著了一般裆泳。 火紅的嫁衣襯著肌膚如雪叹洲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天工禾,我揣著相機(jī)與錄音运提,去河邊找鬼。 笑死闻葵,一個(gè)胖子當(dāng)著我的面吹牛民泵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播槽畔,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼栈妆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了厢钧?” 一聲冷哼從身側(cè)響起鳞尔,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎早直,沒(méi)想到半個(gè)月后寥假,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莽鸿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年昧旨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拾给。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祥得。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蒋得,靈堂內(nèi)的尸體忽然破棺而出级及,到底是詐尸還是另有隱情,我是刑警寧澤额衙,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布饮焦,位于F島的核電站,受9級(jí)特大地震影響窍侧,放射性物質(zhì)發(fā)生泄漏县踢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一伟件、第九天 我趴在偏房一處隱蔽的房頂上張望硼啤。 院中可真熱鬧,春花似錦斧账、人聲如沸谴返。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嗓袱。三九已至籍救,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渠抹,已是汗流浹背蝙昙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梧却,地道東北人耸黑。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像篮幢,于是被迫代替她去往敵國(guó)和親大刊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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