国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

cyixlq / 1335人閱讀

摘要:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)結(jié)構(gòu),也就是物理結(jié)構(gòu),分為兩種順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。數(shù)組就是順序存儲(chǔ)結(jié)構(gòu)的典型代表。即談數(shù)據(jù)結(jié)構(gòu)又談算法才能夠真正裝爺。

什么是數(shù)據(jù)結(jié)構(gòu)
概念
官方定義:

數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中的操作對(duì)象,以及它們之間的關(guān)系和操作等相關(guān)問(wèn)題的學(xué)科。

我的理解:

程序設(shè)計(jì) = 數(shù)據(jù)結(jié)構(gòu) + 算法

數(shù)據(jù)結(jié)構(gòu),顧名思義,就是數(shù)據(jù)之間的結(jié)構(gòu)關(guān)系,或者理解成數(shù)據(jù)元素相互之間存在的一種或多種特定關(guān)系的集合。當(dāng)然這些概念都是大學(xué)喜歡考的,我們沒(méi)必要糾結(jié)于這個(gè)概念,有自己恰當(dāng)?shù)摹⒉⑶铱梢詾樗怂邮艿慕忉尵涂梢浴?/p>

數(shù)據(jù)結(jié)構(gòu)中結(jié)構(gòu)的概念
數(shù)據(jù)結(jié)構(gòu)中的結(jié)構(gòu),也就是我們研究的主體對(duì)象。數(shù)據(jù)結(jié)構(gòu)中我們很少研究數(shù)據(jù),因?yàn)閿?shù)據(jù)在內(nèi)存中的表現(xiàn)形式對(duì)于我們都是一樣的,也就是二進(jìn)制。傳統(tǒng)上,我們把數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。

邏輯結(jié)構(gòu)

指反映數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),其中的邏輯關(guān)系是指數(shù)據(jù)元素之間的前后關(guān)系,而與他們?cè)谟?jì)算機(jī)中的存儲(chǔ)位置無(wú)關(guān)。邏輯結(jié)構(gòu)分為以下四類:

1.集合結(jié)構(gòu)

集合結(jié)構(gòu)中的數(shù)據(jù)元素同屬于一個(gè)集合,他們之間是并列的關(guān)系,除此之外沒(méi)有其他關(guān)系。如下圖,可以很好的表示集合結(jié)構(gòu)中的元素之間的關(guān)系:

2.線性結(jié)構(gòu)

線性結(jié)構(gòu)中的元素存在一對(duì)一的相互關(guān)系。如下圖,可以很好的表示線性結(jié)構(gòu)中的元素之間的關(guān)系:

3.樹(shù)形結(jié)構(gòu)

樹(shù)形結(jié)構(gòu)中的元素存在一對(duì)多的相互關(guān)系。如下圖,可以很好的表示樹(shù)形結(jié)構(gòu)中的元素之間的關(guān)系:

4.圖形結(jié)構(gòu)

圖形結(jié)構(gòu)中的元素存在多對(duì)多的相互關(guān)系。如下圖,可以很好的表示圖形結(jié)構(gòu)中的元素之間的關(guān)系:

物理結(jié)構(gòu)

物理結(jié)構(gòu)又叫存儲(chǔ)結(jié)構(gòu),指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間的存放形式。通俗的講,物理結(jié)構(gòu)研究的是數(shù)據(jù)在存儲(chǔ)器中存放的形式。 存儲(chǔ)器主要針對(duì)于內(nèi)存而言,像硬盤、軟盤、光盤等外部存儲(chǔ)器的數(shù)據(jù)組織通常用文件結(jié)構(gòu)來(lái)描述。

數(shù)據(jù)在內(nèi)存中的存儲(chǔ)結(jié)構(gòu),也就是物理結(jié)構(gòu),分為兩種:順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

順序存儲(chǔ)結(jié)構(gòu)

順序存儲(chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在地址連續(xù)的存儲(chǔ)單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的。數(shù)組就是順序存儲(chǔ)結(jié)構(gòu)的典型代表。其在內(nèi)存中的存儲(chǔ)形式類似于下圖:

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在內(nèi)存中的任意存儲(chǔ)單元里,也就是可以把數(shù)據(jù)存放在內(nèi)存的各個(gè)位置。這些數(shù)據(jù)在內(nèi)存中的地址可以是連續(xù)的,也可以是不連續(xù)的。

和順序存儲(chǔ)結(jié)構(gòu)不同的是,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的數(shù)據(jù)元素之間是通過(guò)指針來(lái)連接的,我們可以通使用指針來(lái)找到某個(gè)數(shù)據(jù)元素的位置,然后對(duì)這個(gè)數(shù)據(jù)元素進(jìn)行一些操作。如下圖,可以幫助我們理解鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):

順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的區(qū)別

打個(gè)比方說(shuō)一下順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的區(qū)別:
比如去銀行取錢,順序存儲(chǔ)結(jié)構(gòu)就相當(dāng)于,所有的客戶按照先來(lái)后到的順序有序的的坐在大廳的椅子上(注意:是有順序的坐著哦)。
而鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)相當(dāng)于,所有的客戶只要一到銀行,大堂經(jīng)理就給他們每人一個(gè)號(hào)碼,然后他們可以隨便坐在哪個(gè)椅子上(隨便坐,不需要按照什么順序坐),只需要等待工作人員廣播叫號(hào)即可。
而每個(gè)客戶手里的號(hào)碼就相當(dāng)于指針,當(dāng)前的指針指向下一個(gè)存儲(chǔ)空間,這樣,所有不連續(xù)的空間就可以被有順序的按照線性連接在一起了。
算法
說(shuō)到數(shù)據(jù)結(jié)構(gòu),必須要一并帶上算法,在筆者看來(lái),不談算法的數(shù)據(jù)結(jié)構(gòu)只是你理解了概念,只能夠出去裝X而已。即談數(shù)據(jù)結(jié)構(gòu)又談算法才能夠真正裝爺。只可惜,以我現(xiàn)在腦海里殘留的一點(diǎn)概念,我出去只能夠裝X。廢話少說(shuō),直接行干貨!

算法的概念
是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問(wèn)題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略機(jī)制。

以上是我在百度百科找到的解釋,在我看來(lái),算法就是求解一個(gè)問(wèn)題所需要的步驟所形成的解決方法,每一步包括一個(gè)或者多個(gè)操作。無(wú)論是現(xiàn)實(shí)生活中還是計(jì)算機(jī)中,解決同一個(gè)問(wèn)題的方法可能有很多種,在這N多種算法中,肯定存在一個(gè)執(zhí)行效率最快的方法,那么這個(gè)方法就是最優(yōu)算法。

算法的特性
算法具有五個(gè)基本特征:輸入、輸出、有窮性、確定性和可行性。

輸入

一個(gè)算法具有零個(gè)或者多個(gè)輸出。以刻畫(huà)運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸入是指算法本身定出了初始條件。后面一句話翻譯過(guò)來(lái)就是,如果一個(gè)算法本身給出了初始條件,那么可以沒(méi)有輸出。比如,打印一句話:NSLog(@"你最牛逼!");

輸出

算法至少有一個(gè)輸出。也就是說(shuō),算法一定要有輸出。輸出的形式可以是打印,也可以使返回一個(gè)值或者多個(gè)值等。也可以是顯示某些提示。

有窮性

算法的執(zhí)行步驟是有限的,算法的執(zhí)行時(shí)間也是有限的。

確定性

算法的每個(gè)步驟都有確定的含義,不會(huì)出現(xiàn)二義性。
可行性

算法是可用的,也就是能夠解決當(dāng)前問(wèn)題。
當(dāng)然,回過(guò)頭來(lái)一看,這五個(gè)特性都是廢話,并且依稀記得大學(xué)老師都教過(guò)。所以,我們不用浪費(fèi)腦力在這些不必要的概念上,因?yàn)榇髮W(xué)早已離我遠(yuǎn)去,考試什么的跟我也沒(méi)有一毛錢關(guān)系,只要知道這么回事就好。
算法的設(shè)計(jì)要求
要設(shè)計(jì)一個(gè)好的算法,需要考慮以下4個(gè)特性(其實(shí)多半是廢話)。

正確性

廢話,誰(shuí)會(huì)設(shè)計(jì)一個(gè)不能夠解決問(wèn)題的方法。

可讀性

指算法無(wú)論是從設(shè)計(jì)思路上,還是從注釋方面,都要能夠保證算法是可讀的,也就是可以被其他人員能夠讀懂的。其實(shí)也是廢話,這是一個(gè)優(yōu)秀的程序員必備的。

健壯性

通俗的講,一個(gè)好的算法應(yīng)該具有捕獲異常/處理異常的能力。另外,對(duì)于測(cè)試人員的壓力測(cè)試、邊界值測(cè)試等刁難的測(cè)試手段,算法應(yīng)該能夠輕松的扛過(guò)去。

時(shí)間效率高和存儲(chǔ)量低

這其實(shí)是兩個(gè)概念,時(shí)間效率就是指的時(shí)間復(fù)雜度,存儲(chǔ)量就是指的空間復(fù)雜度。翻譯過(guò)來(lái)就是一個(gè)好的算法應(yīng)該考慮時(shí)間復(fù)雜度和空間復(fù)雜度。而往往時(shí)間復(fù)雜度和空間復(fù)雜度是相互彌補(bǔ)的。也就是從某些角度,我們可以了通過(guò)犧牲算法運(yùn)算時(shí)間的方式來(lái)減少對(duì)內(nèi)存的占用,反之亦然。對(duì)于時(shí)間復(fù)雜度和空間復(fù)雜度這兩個(gè)概念,大家不用泰國(guó)迷惑,我會(huì)拿出來(lái)一篇文章專門講解,請(qǐng)大家稍安勿躁,持續(xù)關(guān)注。

PS:本篇文章是一個(gè)簡(jiǎn)單的開(kāi)始,里面涉及了一些概念大家不必太過(guò)計(jì)較,以后的文章中會(huì)逐步的對(duì)這些概念進(jìn)行展開(kāi)講解。請(qǐng)大家不要急躁,不要?dú)怵H!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23031.html

相關(guān)文章

  • 優(yōu)秀程序員都應(yīng)該學(xué)習(xí)的 GitHub 上開(kāi)源的數(shù)據(jù)結(jié)構(gòu)算法項(xiàng)目

    摘要:強(qiáng)烈推薦上值得前端學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目,包含圖的演示過(guò)程與視頻講解。該倉(cāng)庫(kù)包含了多種基于的算法與數(shù)據(jù)結(jié)構(gòu),提供進(jìn)一步閱讀的解釋和鏈接。數(shù)據(jù)結(jié)構(gòu)和算法必知必會(huì)的個(gè)代碼實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就算招式練的再花哨,終究成不了高手;只有內(nèi)功深厚者,前端之路才會(huì)走得...

    cheukyin 評(píng)論0 收藏0
  • 用 PHP 的方式實(shí)現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項(xiàng)是對(duì)客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個(gè)子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項(xiàng)目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡(jiǎn)...

    Karrdy 評(píng)論0 收藏0
  • 用 PHP 的方式實(shí)現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項(xiàng)是對(duì)客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個(gè)子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項(xiàng)目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡(jiǎn)...

    pakolagij 評(píng)論0 收藏0
  • 用 PHP 的方式實(shí)現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項(xiàng)是對(duì)客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個(gè)子集。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)元素之間的相互關(guān)系稱為邏輯結(jié)構(gòu)。 項(xiàng)目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡(jiǎn)...

    leonardofed 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<