<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          終于學(xué)完國(guó)內(nèi)算法第一人10年經(jīng)驗(yàn)總結(jié)的數(shù)據(jù)結(jié)構(gòu)與算法詳解文檔

          共 4147字,需瀏覽 9分鐘

           ·

          2021-08-19 11:58

          相信想進(jìn)一線大廠的程序員是非常多的,也是程序員一直以來(lái)的夢(mèng),不僅僅是因?yàn)樾劫Y比較高,更多的是因?yàn)榇髲S比較鍛煉人,將來(lái)的發(fā)展空間也是非常大的!

          近年來(lái),在面試大廠中,算法的比重是越來(lái)越高了,像BATJ TMDPS,尤其是字節(jié),數(shù)據(jù)結(jié)構(gòu)與算法極其重要。

          今天就給大家分享國(guó)內(nèi)算法第一人10年經(jīng)驗(yàn)總結(jié)的數(shù)據(jù)結(jié)構(gòu)與算法詳解文檔,希望大家能夠喜歡!

          首先,大齡大家看一下目錄


          其次,來(lái)看主要內(nèi)容

          本文旨在講解數(shù)據(jù)結(jié)構(gòu)和算法的核心知識(shí)。本文主要內(nèi)容包括線性表、棧、隊(duì)列、串、數(shù)組、廣義表、樹(shù)、圖、查找算法、排序算法、遞推算法、遞歸算法、枚舉算法、貪心算法、回溯算法、數(shù)值算法和實(shí)用算法等。適合計(jì)算機(jī)專業(yè)的學(xué)生、軟件開(kāi)發(fā)專業(yè)人員等閱讀。

          全文總共分為數(shù)據(jù)結(jié)構(gòu)與算法兩大部分,總共有18個(gè)章節(jié)。

          第一部分 數(shù)據(jù)結(jié)構(gòu)

          數(shù)據(jù)結(jié)構(gòu)主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),以及對(duì)數(shù)據(jù)的各種操作,是深入學(xué)習(xí)算法設(shè)計(jì)與分析、操作系統(tǒng)、編譯原理、軟件工程等的重要基礎(chǔ)。隨著計(jì)算機(jī)應(yīng)用領(lǐng)域的不斷擴(kuò)展,非數(shù)值計(jì)算問(wèn)題已成為計(jì)算機(jī)應(yīng)用領(lǐng)域處理的主要問(wèn)題之一,簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)已經(jīng)不能滿足需要,無(wú)論是系統(tǒng)軟件設(shè)計(jì)還是應(yīng)用軟件設(shè)計(jì),均涉及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)處理。好的算法是建立在解決實(shí)際問(wèn)題過(guò)程中對(duì)數(shù)據(jù)結(jié)構(gòu)的描述上的。因此,掌握扎實(shí)的數(shù)據(jù)結(jié)構(gòu)的基本知識(shí)和技能對(duì)于今后的專業(yè)學(xué)習(xí)和軟件開(kāi)發(fā)是十分必要的。該部分主要介紹線性表、棧、隊(duì)列、串、數(shù)組、廣義表、樹(shù)和圖等方面的知識(shí)和應(yīng)用。

          1章 線性表,線性表是一種最基本、最常用的數(shù)據(jù)結(jié)構(gòu),表中的元素呈線性關(guān)系。線性表、棧、隊(duì)列和串都屬于線性結(jié)構(gòu),線性結(jié)構(gòu)的特點(diǎn)是:除了第一個(gè)元素沒(méi)有直接前驅(qū)元素,最后一個(gè)元素沒(méi)有直接后繼元素外,其他元素有唯一的前驅(qū)元素和唯一的后繼元素。


          2章 棧,棧(stack)是一種操作受限的線性表。棧具有線性表的結(jié)構(gòu)特點(diǎn):除了第一個(gè)元素和最后一個(gè)元素外,其他元素只有一個(gè)前驅(qū)元素和一個(gè)后繼元素。棧的限制在于它只允許在表的一端進(jìn)行插入和刪除操作。在日常生活中,有許多棧的例子,進(jìn)制轉(zhuǎn)換、表達(dá)式求值、括號(hào)匹配使用的都是棧的“后進(jìn)先出”設(shè)計(jì)思想。


          3章 隊(duì)列,隊(duì)列作為一種操作受限的線性表,它只允許在表的一端進(jìn)行插入,另一端進(jìn)行刪除。隊(duì)列具有“先進(jìn)先出”的特性,其應(yīng)用非常廣泛,主要應(yīng)用在樹(shù)的層次遍歷、圖的廣度優(yōu)先遍歷、鍵盤(pán)的輸入緩沖區(qū)、操作系統(tǒng)的資源分配等方面。


          4章 串,字符串,簡(jiǎn)稱串,它也是一種重要的線性結(jié)構(gòu)。計(jì)算機(jī)中處理的大部分?jǐn)?shù)據(jù)是串?dāng)?shù)據(jù),例如學(xué)生學(xué)籍信息系統(tǒng)中的姓名、性別、家庭住址、院系名稱等數(shù)據(jù)都屬于串?dāng)?shù)據(jù)。串廣泛應(yīng)用于各行各業(yè)的信息管理、信息檢索、問(wèn)答系統(tǒng)、機(jī)器翻譯等系統(tǒng)的處理中。


          5章 數(shù)組,前面幾章介紹的線性表、棧、隊(duì)列和串都屬于線性結(jié)構(gòu),本章的數(shù)組和下一章的廣義表可看作線性結(jié)構(gòu)的推廣。數(shù)組中的元素本身可以具有某種結(jié)構(gòu),而且元素的結(jié)構(gòu)相同。數(shù)組中的元素可以是單個(gè)元素也可以是一個(gè)線性表。


          6章 廣義表,與數(shù)組一樣,廣義表也是線性表的一種推廣。它是一種遞歸定義的數(shù)據(jù)結(jié)構(gòu),但其數(shù)據(jù)元素的類型可以不同,其元素可以是普通元素,也可以是廣義表。廣義表被廣泛應(yīng)用于人工智能等領(lǐng)域的表處理語(yǔ)言LISP中,它把廣義表作為基本的數(shù)據(jù)結(jié)構(gòu),就連程序也表示成一系列的廣義表。


          7章 樹(shù),本章討論的樹(shù)、二叉樹(shù)等樹(shù)形結(jié)構(gòu)(簡(jiǎn)稱樹(shù))屬于非線性數(shù)據(jù)結(jié)構(gòu)。具體地講,樹(shù)是一種層次結(jié)構(gòu),這種層次結(jié)構(gòu)的特點(diǎn)是如果存在前驅(qū)節(jié)點(diǎn),則一定是唯一的;如果存在后繼節(jié)點(diǎn),則可以是多個(gè)。簡(jiǎn)言之,樹(shù)中的節(jié)點(diǎn)之間是一對(duì)多的關(guān)系。樹(shù)在日常生活中得到了廣泛應(yīng)用,如文件管理中的目錄結(jié)構(gòu)、人類社會(huì)的族譜和各種社會(huì)機(jī)構(gòu)的組織都可用樹(shù)來(lái)形象表示。


          8章 圖,圖(graph)是一種網(wǎng)狀結(jié)構(gòu),是比樹(shù)更復(fù)雜的非線性結(jié)構(gòu)。在圖中,任意兩個(gè)節(jié)點(diǎn)之間都可能相關(guān),即節(jié)點(diǎn)之間的鄰接關(guān)系可以是任意的。每個(gè)節(jié)點(diǎn)既可有多個(gè)直接前驅(qū),也可有多個(gè)直接后繼。圖被應(yīng)用于描述各種復(fù)雜的數(shù)據(jù)對(duì)象,在自然科學(xué)、社會(huì)科學(xué)和人文科學(xué)等領(lǐng)域和日常生活中有著非常廣泛的應(yīng)用,如化學(xué)分子結(jié)構(gòu)分析、遺傳學(xué)、通信線路、交通航線等。


          第二部分 算法

          算法(algorithm)是特定問(wèn)題求解步驟的描述,在計(jì)算機(jī)中表現(xiàn)為有限的操作序列。數(shù)據(jù)結(jié)構(gòu)與算法的區(qū)別在于數(shù)據(jù)結(jié)構(gòu)關(guān)注的是數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)以及基本操作,而算法研究適合計(jì)算機(jī)實(shí)現(xiàn)的求解問(wèn)題的方法,更多地關(guān)注如何在數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上解決實(shí)際問(wèn)題。該部分主要介紹一些常用的算法和技術(shù),包括查找算法、排序算法、遞推算法、遞歸算法、枚舉算法、貪心算法、回溯算法、數(shù)值算法、實(shí)用算法、程序調(diào)試技術(shù)等內(nèi)容。

          9章 查找算法,查找也稱檢索,是指從一批記錄中找到指定記錄的過(guò)程。查找算法是程序設(shè)計(jì)過(guò)程中處理非數(shù)值問(wèn)題常用的操作之一。例如,從英漢詞典中查找某個(gè)單詞的含義,從聯(lián)系人中查找朋友的聯(lián)系方式等。常用的查找算法包括基于線性表的查找、基于樹(shù)的查找、哈希表的查找。


          10章 排序算法,排序算法是程序設(shè)計(jì)中最常用的算法之一。排序(sorting)是程序設(shè)計(jì)中的一種重要技術(shù),它將由若干數(shù)據(jù)元素(或記錄)組成的無(wú)序序列重新排列成一個(gè)按關(guān)鍵字排列的有序序列。一般來(lái)說(shuō),排序算法按照排序策略可分為插入排序、交換排序、選擇排序、歸并排序和基數(shù)排序。


          11章 遞推算法,遞推算法是一種比較簡(jiǎn)單的算法,即通過(guò)已知條件,利用特定關(guān)系得到中間結(jié)論,然后得到最后結(jié)果的算法。遞推算法通常利用計(jì)算機(jī)運(yùn)算速度快、適合進(jìn)行重復(fù)操作的特點(diǎn),讓計(jì)算機(jī)對(duì)一組操作重復(fù)執(zhí)行,每次執(zhí)行時(shí)都使用變量的新值代替舊值,不斷迭代對(duì)問(wèn)題進(jìn)行求解。遞推算法可分為順推法和逆推法兩種,本章通過(guò)幾個(gè)典型的實(shí)例來(lái)說(shuō)明遞推算法的應(yīng)用。


          12章 遞歸算法,遞歸就是自己調(diào)用自己,它是設(shè)計(jì)和描述算法的一種有力的工具,常常用來(lái)解決比較復(fù)雜的問(wèn)題。遞歸是一種分而治之、將復(fù)雜問(wèn)題轉(zhuǎn)換為簡(jiǎn)單問(wèn)題的求解方法。一般情況下,能采用遞歸描述的算法通常有以下特征:為求解規(guī)模為N的問(wèn)題,設(shè)法將它分解成規(guī)模較小的問(wèn)題,從小問(wèn)題的解更容易構(gòu)造出大問(wèn)題的解,并且這些規(guī)模較小的問(wèn)題也能采用同樣的分解方法,分解成規(guī)模更小的問(wèn)題,并能從這些更小問(wèn)題的解構(gòu)造出規(guī)模較大問(wèn)題的解。一般情況下,規(guī)模N=1時(shí),問(wèn)題的解是已知的。

          以上求解過(guò)程也利用了分治算法的思想。分治算法將一個(gè)大規(guī)模問(wèn)題分解為若干子問(wèn)題,子問(wèn)題相互獨(dú)立,然后將子問(wèn)題的解合并就可得到原問(wèn)題的解。分治算法具體可以使用遞歸實(shí)現(xiàn)。遞歸算法具有以下優(yōu)缺點(diǎn)。

          優(yōu)點(diǎn):使用遞歸編寫(xiě)的程序簡(jiǎn)潔、結(jié)構(gòu)清晰,程序的正確性很容易證明,不需要了解遞歸調(diào)用的具體細(xì)節(jié)。

          缺點(diǎn):遞歸函數(shù)在調(diào)用過(guò)程中,每一層調(diào)用都需要保存臨時(shí)變量、返回地址、傳遞參數(shù),因此遞歸函數(shù)的執(zhí)行效率低。


          13章 枚舉算法,枚舉算法,也稱窮舉算法,它是編程中常用的一種算法。在解決某些問(wèn)題時(shí),可能無(wú)法按照一定規(guī)律從眾多的候選解中找出正確的解。此時(shí),可以從眾多的候選解中逐一取出候選解,并驗(yàn)證候選解是否為正確的解。我們將這種方法稱為枚舉算法。

          枚舉算法的缺點(diǎn)是運(yùn)算量比較大,解題效率不高。如果枚舉范圍太大,那么就會(huì)耗費(fèi)過(guò)多。枚舉算法的優(yōu)點(diǎn)是思路簡(jiǎn)單,程序編寫(xiě)和調(diào)試方便。因此,如果問(wèn)題的規(guī)模不是很大,且要求在規(guī)定的時(shí)間和空間下能夠求出解,那么我們最好采用枚舉算法,而不需要太在意是否還有更快的算法。


          14章 貪心算法,貪心算法(greedy algorithm)是一種不追求最優(yōu)解,只希望找到較滿意解的算法。貪心算法省去了為找最優(yōu)解要窮盡所有可能而必須耗費(fèi)的大量時(shí)間,因此它一般可以快速得到比較滿意的解。貪心算法常以當(dāng)前情況為基礎(chǔ)做最優(yōu)選擇,而不考慮各種可能的整體情況,所以貪心算法不需要回溯。

          貪心算法的典型應(yīng)用包括找零錢(qián)問(wèn)題、最優(yōu)裝載問(wèn)題、哈夫曼編碼加油站問(wèn)題、背包問(wèn)題等。例如,平時(shí)購(gòu)物找零錢(qián)時(shí),為使找回的零錢(qián)的硬幣數(shù)最少,不要求窮舉出找零錢(qián)的所有方案,而是從最大面值的幣種開(kāi)始,按遞減的順序考慮各面額。先盡量用大面值的面額,當(dāng)不足大面值時(shí)才去考慮下一個(gè)較小面值,這就是應(yīng)用了貪心算法的思想。


          15章 回溯算法,回溯(backtracking)算法,又稱為試探算法,實(shí)際上類似于枚舉的搜索嘗試過(guò)程。它在搜索嘗試過(guò)程中尋找問(wèn)題的解,當(dāng)發(fā)現(xiàn)不滿足求解條件時(shí),就“回溯”返回,嘗試其他路徑。回溯算法是一種選優(yōu)搜索法,按選優(yōu)條件向前搜索,以達(dá)到目標(biāo)。但當(dāng)搜索到某一步時(shí),發(fā)現(xiàn)原先的選擇并不優(yōu)或達(dá)不到目標(biāo),就退回上一步重新選擇。這種走不通就退回再走的方法稱為回溯,而滿足回溯條件的某個(gè)狀態(tài)的點(diǎn)稱為“回溯點(diǎn)”。許多復(fù)雜的、規(guī)模較大的問(wèn)題都可以使用回溯算法求解,回溯算法有“通用解題算法”的美稱。


          16章 數(shù)值算法,數(shù)值算法是指使用計(jì)算機(jī)求解數(shù)學(xué)問(wèn)題近似解的算法,并在求解過(guò)程中考慮誤差、收斂性和穩(wěn)定性等問(wèn)題。這些數(shù)學(xué)問(wèn)題主要包括解方程或方程組、計(jì)算定積分等。數(shù)值算法計(jì)算的結(jié)果是離散的,存在一定誤差,主要運(yùn)用有限逼近的思想進(jìn)行誤差運(yùn)算。


          17章 實(shí)用算法,除了前文介紹的常用算法外,在日常生活中,一些與實(shí)際生活緊密相關(guān)的問(wèn)題可能會(huì)涉及數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法方面的知識(shí)。例如大小寫(xiě)金額的轉(zhuǎn)換、大整數(shù)相乘、求算術(shù)表達(dá)式的值等。


          18章 常見(jiàn)錯(cuò)誤與程序調(diào)試技術(shù),在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)與實(shí)現(xiàn)算法時(shí),即使是算法思想是正確的,也常常會(huì)遇到各種類型的錯(cuò)誤。因此程序調(diào)試成為必不可少的環(huán)節(jié)之一,只有當(dāng)程序能正確運(yùn)行出結(jié)果,才說(shuō)明算法或程序是正確的。程序調(diào)試不僅可以驗(yàn)證算法思想和程序的正確性,還可以提高我們的算法設(shè)計(jì)和程序編寫(xiě)水平。因此,程序調(diào)試和算法設(shè)計(jì)兩者是相輔相成的。


          需要這份1114頁(yè)【數(shù)據(jù)結(jié)構(gòu)與算法詳解】文檔來(lái)學(xué)習(xí)的小伙伴,可以轉(zhuǎn)發(fā)此文關(guān)注小編,私信小編【技術(shù)】來(lái)獲取??!

          整理不易,望珍惜??!


          本文就是愿天堂沒(méi)有BUG給大家分享的內(nèi)容,大家有收獲的話可以分享下,想學(xué)習(xí)更多的話可以到微信公眾號(hào)里找我,我等你哦。


          瀏覽 15
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人精品视频夜夜嗨 | 成人免费公开视频 | 亚洲成人影片在线观看 | 丁香无码视频 | 看国产管黄色电影在线 |