日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 技術學院 > 技術前線
[導讀]如果你關注計算機專業(yè)招聘試題,會發(fā)現(xiàn)越是大型公司,問的問題越基礎,有的甚至問你什么是棧和隊列,反而一些小公司會關心你做過什么系統(tǒng)。從關注點的不同可以看出,大公司更注重基礎扎實和發(fā)展?jié)摿Γ」鞠M懔⒖棠軌驗槠涓苫???梢赃@樣比喻:小公司喜歡細而長的竹子,大公司更喜歡碗口粗的竹筍。

我曾經(jīng)推薦一個學生到某知名公司,沒多久,學生向我說了應聘的事情:“我介紹我開發(fā)了企業(yè)管理系統(tǒng)、在線商城系統(tǒng)等,沒想到他問我使用了什么數(shù)據(jù)結構和算法,我懂很多技術,那么多功能我都實現(xiàn)了,他不問,卻問我使用了什么數(shù)據(jù)結構和算法,你說搞笑不?數(shù)據(jù)結構和算法我早就忘了,我會開發(fā)軟件還不行嗎?”人力資源總監(jiān)也反饋過來意見:“很搞笑,這個學生做了不少系統(tǒng),卻說根本沒用到數(shù)據(jù)結構和算法?!?

既然雙方都覺得這是一件搞笑的事情,那么我們就攤開來看,數(shù)據(jù)結構到底是什么。

撥云見日,看清數(shù)據(jù)結構

當我們遇到一個實際問題時,首先需要解決兩件事:

(1)如何將數(shù)據(jù)存儲在計算機中;

(2)用什么方法和策略解決問題。

前者是數(shù)據(jù)結構,后者是算法。只有數(shù)據(jù)結構沒有算法,相當于只把數(shù)據(jù)存儲到計算機中,而沒有有效的方法去處理,就像一幢只有框架的爛尾樓;若只有算法,沒有數(shù)據(jù)結構,就像沙漠里的海市蜃樓,只不過是空中樓閣罷了。

數(shù)據(jù)是一切能輸入計算機中的信息的總和,結構是指數(shù)據(jù)之間的關系。數(shù)據(jù)結構就是將數(shù)據(jù)及其之間的關系有效地存儲在計算機中并進行基本操作。算法是對特定問題求解步驟的一種描述,通俗講就是解決問題的方法和策略。

在遇到一個實際問題時,要充分利用自己所學的數(shù)據(jù)結構,將數(shù)據(jù)及其之間的關系有效地存儲在計算機中,然后選擇合適的算法策略,并用程序高效地實現(xiàn)。這就是Niklaus Wirth教授所說的:“數(shù)據(jù)結構+算法=程序”。

為什么要學習數(shù)據(jù)結構

高校的計算機專業(yè)為本科生都開設了數(shù)據(jù)結構課程,它是計算機學科知識結構的核心和技術體系的基石,在研究生考試中也是必考科目。隨著科學技術的飛速發(fā)展,數(shù)據(jù)結構的基礎性地位不僅沒有動搖,反而因近年來算法工程師的高薪形勢,而得到了業(yè)內(nèi)空前的重視。很多人認為基本的數(shù)據(jù)結構及操作已經(jīng)在高級語言(如C++、Java語言)中封裝,棧、隊列、排序、優(yōu)先隊列等都可以直接調(diào)用庫函數(shù),學會怎么調(diào)用就好了,為什么要重復“造輪子”?那么到底有沒有必要好好學習數(shù)據(jù)結構呢?

先看學習數(shù)據(jù)結構有什么用處。

(1)學習有效存儲數(shù)據(jù)的方法。很多學生在學習數(shù)據(jù)結構時,問我要不要把單鏈表插入、刪除背下來?要不合上書就不會寫了。我非常詫異,為什么要背?理工科技術知識很少需要記憶的,是用的,用的!學習知識不能只靠死記硬背,更重要的是學習處理問題的方法。如何有效地存儲數(shù)據(jù),不同的數(shù)據(jù)結構產(chǎn)生什么樣的算法復雜性,有沒有更好的存儲方法提高算法的效率?

(2)處理具有復雜關系的數(shù)據(jù)?,F(xiàn)實中很多具有復雜關系的數(shù)據(jù)無法通過簡單的庫函數(shù)調(diào)用實現(xiàn)。如同現(xiàn)在很多芯片高度集成,完全不需要知道芯片內(nèi)部如何,直接使用就行了。但是,如果在現(xiàn)實中遇到一個復雜問題,現(xiàn)有的芯片根本無法解決,或者一個芯片只能完成其中一個功能,而我們需要的是完成該復雜問題的一個集成芯片,這時就需要運用所學的數(shù)據(jù)結構知識來高效處理具有復雜關系的數(shù)據(jù)。

(3)提高算法效率。很多問題的基礎數(shù)據(jù)結構運行效率較低,需要借助高級數(shù)據(jù)結構或通過改進數(shù)據(jù)結構來提高算法效率。

通過學習數(shù)據(jù)結構,更加準確和深刻地理解不同數(shù)據(jù)結構之間的共性和聯(lián)系,學會選擇和改進數(shù)據(jù)結構,高效地設計并實現(xiàn)各種算法,這才是數(shù)據(jù)結構的精髓。

數(shù)據(jù)結構為什么那么難

網(wǎng)絡上太多的同學吐槽被“虐”,如“滔滔江水連綿不絕”,數(shù)據(jù)結構太難了!真的很難嗎?其實數(shù)據(jù)結構只是講了3部分內(nèi)容:線性結構、樹和圖。到底難在哪里呢?我通過調(diào)查,了解到數(shù)據(jù)結構難學大概有以下4個原因。

(1)無法接受它的描述方式。數(shù)據(jù)結構的描述大多是抽象的形式,我們習慣了使用自然語言表達,難以接受數(shù)據(jù)結構的抽象表達。不止一個學生問我,書上的“ElemType”到底是什么類型?運行時怎么經(jīng)常提示錯誤。它的意思就是“元素類型”,只是這樣來描述,你需要什么類型就寫什么類型,例如int。這樣的表達方式會讓不少人感到崩潰。

(2)不知道它有什么用處。盡管很多人學習數(shù)據(jù)結構,但目的各不相同。有的人是應付考試,有的人是參加算法競賽需要,而很多人不太清楚學習數(shù)據(jù)結構有什么用處,迷迷糊糊看書、做題、考試。

(3)體會不到其中的妙處。由于教材、教師等各種因素影響,很多學生沒有體會到數(shù)據(jù)結構處理數(shù)據(jù)的妙處,經(jīng)常為學不會而焦頭爛額,學習重在體會其中的樂趣,有樂趣才有興趣,興趣是最好的驅動力。

(4)語言基礎不好。我一直強調(diào)先看圖解,理清思路,再上機??蛇€是有很多同學已經(jīng)理解了思路后,因為缺少main函數(shù),輸入/輸出格式不對,缺少括號等各種語言問題卡殼,而這一切都被戴上了“數(shù)據(jù)結構太難了”的大帽子。

數(shù)據(jù)結構學習秘籍

在講學習秘籍之前,我們首先了解一下數(shù)據(jù)結構學習的3種境界。

(1)會數(shù)據(jù)結構的基本操作。學會各種數(shù)據(jù)結構的基本操作,即取值、查找、插入、刪除等,是最基礎的要求。先看圖解,理解各種數(shù)據(jù)結構的定義,操作方法,然后看代碼,嘗試自己動手上機運行,逐漸掌握基本操作。在初學時,要想理解數(shù)據(jù)結構,一定要學會畫圖。通過畫圖形象表達,能更好地體會其中的數(shù)據(jù)結構關系。因此,初學階段學習利器是:畫圖、理解、畫圖。

(2)會利用數(shù)據(jù)結構解決實際問題。在掌握了書中的基本操作之后,就可以嘗試利用數(shù)據(jù)結構解決一些實際問題了。先學經(jīng)典應用問題的解決方法,體會數(shù)據(jù)結構的使用方法,再做題,獨立設計數(shù)據(jù)結構解決問題。要想熟練應用就必須做大量的題,在做題的過程中體會其中的方法。最好進行專項練習,比如線性表問題、二叉樹問題、圖問題。這一階段的學習利器是:做題、反思、做題。

(3)熟練使用和改進數(shù)據(jù)結構,優(yōu)化算法。這是最高境界了,也是學習數(shù)據(jù)結構的精髓所在,單獨學習數(shù)據(jù)結構是無法達到這種境界的。數(shù)據(jù)結構與算法相輔相成,需要在學習算法的過程中慢慢修煉。在學習算法的同時,逐步熟練應用、改進數(shù)據(jù)結構,慢慢體會不同數(shù)據(jù)結構和算法策略的算法復雜性,最終學會利用數(shù)據(jù)結構改進和優(yōu)化算法。這一階段已經(jīng)在數(shù)據(jù)結構之上,可以通過在ACM測試系統(tǒng)上刷各種算法題,體會數(shù)據(jù)結構在算法設計中的應用。這一階段的學習利器是:刷題、總結、刷題。

它讓數(shù)據(jù)結構變得簡單

趣學數(shù)據(jù)結構 陳小玉 著

本書特色

本書具有五大特色。

(1)完美圖解,通俗易懂。學習數(shù)據(jù)結構最好的辦法就是畫圖、畫圖、畫圖。本書中的每一個基本操作和演示都有圖解,有了圖解,一切就都變得簡單,迎刃而解。

(2)實例豐富,簡單有趣。本書結合大量實例,講述如何利用數(shù)據(jù)結構解決實際問題,使復雜難懂的問題變得簡單有趣,給讀者帶來巨大的閱讀樂趣,使讀者在閱讀中不知不覺地學會數(shù)據(jù)結構知識,體會數(shù)據(jù)結構的妙處。

(3)深入淺出,透析本質。本書采用簡潔易懂的代碼描述,抓住本質,通俗描述及注釋使代碼更加易懂。本書不僅對數(shù)據(jù)結構設計和操作描述全面細致,而且有復雜性分析過程。

(4)實戰(zhàn)演練,循序漸進。本書在每一個數(shù)據(jù)結構講解清楚后,進行實戰(zhàn)演練,使讀者在實戰(zhàn)中體會數(shù)據(jù)結構的設計和操作,增強自信,從而提高了讀者獨立思考、自己動手實踐的能力。豐富的練習題和思考題及時檢驗對所學知識的掌握情況,為讀者從小問題出發(fā),逐步解決大型復雜性問題奠定基礎。

(5)網(wǎng)絡資源,技術支持。本書為讀者提供本書所有范例程序的源代碼、練習題以及答案解析,這些源代碼可以自由修改編譯,以符合自己的需要。本書提供源代碼執(zhí)行、調(diào)試說明書,提供博客、QQ群技術支持,為讀者答疑解惑。

本書內(nèi)容

本書包括10章。

第1章是基礎知識,介紹數(shù)據(jù)結構基礎和算法復雜性的計算方法。

第2~5章是線性結構,講解線性表、棧和隊列、字符串、數(shù)組等的基本操作和應用。

第6章是樹形結構,講解樹、二叉樹、線索二叉樹、樹和森林以及樹的經(jīng)典應用。

第7章是圖形結構,講解圖的存儲、遍歷以及圖的經(jīng)典應用。

第8~9章是數(shù)據(jù)結構的基本應用,講解查找、排序的方法和算法復雜性比較。

第10章是高級數(shù)據(jù)結構及其應用,講解優(yōu)先隊列、并查集、B-樹、B+樹、紅黑樹等。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉