數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)記錄--基本概念(一)

前言

該學(xué)習(xí)參考的書籍為《大話數(shù)據(jù)結(jié)構(gòu)》寇僧,需要一定的數(shù)學(xué)底子和編程思維助析,一個(gè)真正的程序員怎么能不懂?dāng)?shù)據(jù)結(jié)構(gòu)和算法仍劈,既然自己的發(fā)展方向是技術(shù)装悲,那就只能堅(jiān)持昏鹃!

數(shù)據(jù)結(jié)構(gòu)的基本概念
  • 數(shù)據(jù)結(jié)構(gòu)是相互間存在一種或多種特定關(guān)系得數(shù)據(jù)元素的集合

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

  • 數(shù)據(jù)是描述客觀事物的符號(hào)诀诊,是計(jì)算機(jī)中可以操作的對(duì)象洞渤,是能被計(jì)算機(jī)識(shí)別,并輸入給計(jì)算機(jī)處理的符號(hào)集合

  • 數(shù)據(jù)元素是組成數(shù)據(jù)的属瓣、有一定意義的基本單位载迄,在計(jì)算機(jī)中通常作為整體處理讯柔,也被稱為記錄,一個(gè)數(shù)據(jù)元素可以由若干個(gè)數(shù)據(jù)項(xiàng)組成护昧,數(shù)據(jù)項(xiàng)是數(shù)據(jù)不可分割的最小單位

  • 數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合魂迄,是數(shù)據(jù)的子集

  • 結(jié)構(gòu)是指各個(gè)組成部分相互搭配和排列的方式,簡單理解就是關(guān)系惋耙,在現(xiàn)實(shí)世界中捣炬,不同的數(shù)據(jù)元素之間不是獨(dú)立的,而是存在特定的關(guān)系绽榛,我們將這些關(guān)系稱為結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)的分類

按照視點(diǎn)的不同湿酸,數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)

  • 邏輯結(jié)構(gòu)分為四種
    1、集合結(jié)構(gòu):集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一個(gè)集合外灭美,它們之間沒有其他關(guān)系
    2推溃、線性結(jié)構(gòu):線性結(jié)構(gòu)中的數(shù)據(jù)元素是一對(duì)一的關(guān)系
    3、樹形結(jié)構(gòu):樹形結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一種一對(duì)多的層次關(guān)系
    4届腐、圖形結(jié)構(gòu):圖形結(jié)構(gòu)的數(shù)據(jù)元素是多對(duì)多的關(guān)系

  • 物理結(jié)構(gòu)铁坎,是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲(chǔ)形式,也叫存儲(chǔ)結(jié)構(gòu)梯捕,分為兩種:
    1厢呵、順序存儲(chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在地址連續(xù)的存儲(chǔ)單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的
    2傀顾、鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在任意的存儲(chǔ)單元里襟铭,這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的短曾。數(shù)據(jù)元素的存儲(chǔ)關(guān)系并不能反映其邏輯關(guān)系寒砖,因此需要用一個(gè)指針存放數(shù)據(jù)元素的地址,這樣通過地址就可以找到相關(guān)聯(lián)數(shù)據(jù)元素的位置

邏輯結(jié)構(gòu)是面向問題的嫉拐,而物理結(jié)構(gòu)是面向計(jì)算機(jī)的哩都,其基本的目標(biāo)就是將數(shù)據(jù)及其邏輯關(guān)系存儲(chǔ)到計(jì)算機(jī)的內(nèi)存中

  • 數(shù)據(jù)類型是指一組性質(zhì)相同的值的集合及定義在此集合上的一些操作的總稱
  • 抽象是指抽取出事物具有的普遍性的本質(zhì),它是抽出問題的特征而忽略非本質(zhì)的細(xì)節(jié)婉徘,是對(duì)具體事物的一個(gè)概括漠嵌,抽象是一種思考問題的方式,它隱藏了繁雜的細(xì)節(jié)盖呼,只保留實(shí)現(xiàn)目標(biāo)所必須的信息
  • 抽象數(shù)據(jù)類型是指一個(gè)數(shù)學(xué)模型及定義在該模型上的一組操作儒鹿,體現(xiàn)了程序設(shè)計(jì)中問題分解、抽象和信息隱藏的特性
算法的基本概念

算法是解決特定問題求解步驟的描述几晤,在計(jì)算機(jī)中表現(xiàn)為指令的有限序列约炎,并且每條指令表示一個(gè)或多個(gè)操作

  • 算法具有五個(gè)基本特性:輸入、輸出、有窮性圾浅、確定性和可行性
    1掠手、輸入輸出:算法具有零個(gè)或多個(gè)輸入,一個(gè)或多個(gè)輸出
    2狸捕、有窮性:算法在執(zhí)行有限的步驟后喷鸽,自動(dòng)結(jié)束而不會(huì)出現(xiàn)無限循環(huán),并且每一個(gè)步驟在可接受的時(shí)間內(nèi)完成
    3府寒、確定性:算法的每一步驟都具有確定的含義魁衙,不會(huì)出現(xiàn)二義性
    4、可行性:算法的每一步都必須是可行的株搔,也就是說剖淀,每一步都能夠通過執(zhí)行有限次數(shù)完成

  • 算法設(shè)計(jì)要求:正確性、可讀性纤房、健壯性纵隔、時(shí)間效率高和存儲(chǔ)量低
    1、正確性:算法的正確性是指算法至少應(yīng)該具有輸入炮姨、輸出和加工處理無歧義性捌刮,能正確反映問題的需求,能夠得到問題的正確答案舒岸,正確性有以下四個(gè)層次
    (1)無語法錯(cuò)誤
    (2)對(duì)于合法的輸入數(shù)據(jù)能夠產(chǎn)生滿足要求的輸出結(jié)果
    (3)對(duì)于非法的輸入數(shù)據(jù)能夠得出滿足規(guī)格說明的結(jié)果
    (4)對(duì)于精心選擇的绅作、甚至是刁難的測試數(shù)據(jù)都有滿足要求的輸出結(jié)果

通常把(3)作為正確性標(biāo)準(zhǔn),(4)實(shí)現(xiàn)成本太高

2蛾派、可讀性:算法設(shè)計(jì)的另一個(gè)目的是為了便于閱讀俄认、理解和交流
3、健壯性:當(dāng)輸入數(shù)據(jù)不合法時(shí)洪乍,算法也能做出相關(guān)處理眯杏,而不是產(chǎn)生異常或莫名其妙的結(jié)果
4壳澳、時(shí)間效率高和存儲(chǔ)量低:指執(zhí)行時(shí)間短岂贩、占用內(nèi)存和外部硬盤存儲(chǔ)空間少

算法效率的度量方法

算法效率的度量方法,通常說的是執(zhí)行時(shí)間的度量巷波,有事后統(tǒng)計(jì)方法和事前分析估算方法

  • 事后統(tǒng)計(jì)方法:這種方法主要是通過設(shè)計(jì)好的測試程序和數(shù)據(jù)萎津,利用計(jì)算機(jī)計(jì)時(shí)器對(duì)不同算法編制的程序的運(yùn)行時(shí)間進(jìn)行比較,從而確定算法效率的高低抹镊,但這種方法有很大缺陷姜性,是不推薦的,至于它的缺點(diǎn)有以下:
    1髓考、需要根據(jù)算法編寫測試程序,如果算法不好弃酌,測試程序就白寫了
    2氨菇、時(shí)間比較依賴硬件儡炼、軟件等各種因素,無法橫向比較
    3查蓉、算法的測試數(shù)據(jù)設(shè)計(jì)困難乌询,什么樣的數(shù)據(jù)才能保證結(jié)果客觀難以界定

  • 事前分析估算方法:在計(jì)算機(jī)程序編制前,依據(jù)統(tǒng)計(jì)方法對(duì)算法進(jìn)行估算豌研。高級(jí)編程語言編寫的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗的和時(shí)間取決于以下因素:
    1妹田、算法采用的策略、方法
    2鹃共、編譯產(chǎn)生的代碼質(zhì)量
    3鬼佣、問題的輸入規(guī)模
    4、機(jī)器執(zhí)行指令的速度

其中拋開硬件和軟件的因素霜浴,程序運(yùn)行時(shí)間依賴于(1)(2)

測定運(yùn)行時(shí)間

測定運(yùn)行時(shí)間最可靠的方法就是計(jì)算對(duì)運(yùn)行時(shí)間有消耗的基本操作的執(zhí)行次數(shù)晶衷,運(yùn)行時(shí)間與這個(gè)計(jì)算成正比。分析算法的運(yùn)行時(shí)間時(shí)阴孟,重要的是把基本操作的數(shù)量與輸入規(guī)模關(guān)聯(lián)起來晌纫,即基本操作的數(shù)量必須表示成輸入規(guī)模的函數(shù)

  • 函數(shù)的漸近增長:給定兩個(gè)函數(shù)f(n)和g(n),如果存在一個(gè)整數(shù)N永丝,使得對(duì)于所有的n>N锹漱,f(n)總是比g(n)大,那么我們說f(n)的增長漸近快于g(n)慕嚷,算法的優(yōu)劣要根據(jù)輸入規(guī)模做綜合考量

  • 判斷一個(gè)算法的效率時(shí)哥牍,函數(shù)中的常數(shù)和其他次要項(xiàng)常常可以忽略闯冷,而更應(yīng)該關(guān)注主項(xiàng)(最高階項(xiàng))的階數(shù)砂心,也就是函數(shù)中的常數(shù)可以忽略

  • 算法時(shí)間復(fù)雜度:在進(jìn)行算法分析時(shí),語句總的執(zhí)行次數(shù)T(n)是關(guān)于問題規(guī)模n的函數(shù)蛇耀,進(jìn)而分析T(n)隨n變化情況并確定T(n)的數(shù)量級(jí)辩诞。算法的時(shí)間復(fù)雜度,也就是算法的時(shí)間量度纺涤,記作T(n)=O(f(n))译暂。它表示隨問題規(guī)模n的增大,算法執(zhí)行時(shí)間的增長率和f(n)的增長率相同撩炊,稱作算法的漸近時(shí)間復(fù)雜度外永,簡稱為時(shí)間復(fù)雜度。其中f(n)是問題規(guī)模n的某個(gè)函數(shù)拧咳,這種記法也稱為大O記法伯顶,一般情況下,隨著n增大,T(n)增長最慢的算法為最優(yōu)算法祭衩。

  • 推導(dǎo)大O階的方法
    1灶体、用常數(shù)1取代運(yùn)行時(shí)間中的所有加法常數(shù)
    2、在修改后的運(yùn)行次數(shù)函數(shù)中掐暮,只保留最高階項(xiàng)
    3蝎抽、如果最高階項(xiàng)存在且系數(shù)不是1,則去除與這個(gè)項(xiàng)相乘的系數(shù)

常數(shù)階路克,表示為O(1)樟结,執(zhí)行時(shí)間恒定與輸入規(guī)模無關(guān),對(duì)于分支結(jié)構(gòu)if...else精算,無論真假瓢宦,執(zhí)行的次數(shù)都是恒定的,也是O(1)
線性階殖妇,表示為O(n)刁笙,分析循環(huán)結(jié)構(gòu)的運(yùn)行情況
對(duì)數(shù)階,表示為O(logn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谦趣,一起剝皮案震驚了整個(gè)濱河市疲吸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌前鹅,老刑警劉巖摘悴,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舰绘,居然都是意外死亡蹂喻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門捂寿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來口四,“玉大人,你說我怎么就攤上這事秦陋÷剩” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵驳概,是天一觀的道長赤嚼。 經(jīng)常有香客問我,道長顺又,這世上最難降的妖魔是什么更卒? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮稚照,結(jié)果婚禮上蹂空,老公的妹妹穿的比我還像新娘俯萌。我一直安慰自己,他們只是感情好上枕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布绳瘟。 她就那樣靜靜地躺著,像睡著了一般姿骏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斤彼,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天分瘦,我揣著相機(jī)與錄音,去河邊找鬼琉苇。 笑死嘲玫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的并扇。 我是一名探鬼主播去团,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穷蛹!你這毒婦竟也來了土陪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤肴熏,失蹤者是張志新(化名)和其女友劉穎鬼雀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛙吏,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡源哩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸦做。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片励烦。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泼诱,靈堂內(nèi)的尸體忽然破棺而出坛掠,到底是詐尸還是另有隱情,我是刑警寧澤坷檩,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布却音,位于F島的核電站,受9級(jí)特大地震影響矢炼,放射性物質(zhì)發(fā)生泄漏系瓢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一句灌、第九天 我趴在偏房一處隱蔽的房頂上張望夷陋。 院中可真熱鬧欠拾,春花似錦、人聲如沸骗绕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酬土。三九已至荆忍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撤缴,已是汗流浹背刹枉。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屈呕,地道東北人微宝。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像虎眨,于是被迫代替她去往敵國和親蟋软。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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