我們學習c語言是學習如何編寫程式,而資料結構可以幫助我們如何簡潔高效的編寫程式,那如何提公升資料結構體的演算法能力呢?
當我們遇到乙個實際的問題,需要寫程式去解決,我們需要解決的是兩方面的問題,一是如何表達資料之間的邏輯規律及如何將資料儲存到計算機中,二是採用什麼方法來解決問題。這兩個方面可以直接概括為:
資料結構:也就是資料之間的關係
演算法:解決問題的方法
由此可見,如何提公升資料結構的演算法能力,其實就是如何更好的培養自己去解決問題能力的同時,採取最合理的方法。
當我們遇到乙個演算法問題,我覺得解決問題所需要的技能可以大致分為以下幾個方面:
1.資料結構方面的基礎理論知識
2.演算法的知識
3.資料結構和演算法知識的應用
第一第二可以說是我們提公升自己演算法能力的「基元」,也可以說它就相當於人體的基本單位-細胞。只有將這些基本的理論用法掌握清楚,我們才能去應用。簡單來說,你不理解陣列、鍊錶、樹、圖分別的特點及使用方法,當你遇到問題,最適合的方式就沒有辦法進行比較選擇。
第三點就需要涉及到如何將資料結構和演算法應用於特定的場景,有一些特點的資料之間關係的表示,它就僅僅只使用於特定的方式進行表示,特定的演算法結合使用實現資料之間的運算。例如:學校運動會,學生參加運動會專案,同一時間只能進行一項運動,但是我們學校每個專案時間安排表是已經確定的,且同一時間不可能只進行乙個運動專案,那這種情況的話特定的情況下,我們需要採用的就是圖形結構,既然邏輯儲存結構已經確定,用什麼樣的演算法實現就可以清晰明了了。
針對於第三點,在第一和第二點的基礎上,更多的就是要學會處於不同的場景,抓住資料之間關係的本質,當然這個離不開對基礎知識的熟練掌握。
提公升這三個方面的小建議:
1.資料結構的學習之前,我覺得我們應該首先將c語言的基礎打紮實。很多人在程式設計過程出現很多bug,不知道怎麼入手解決,其實很多時候c語言夠紮實你會發現很多問題都和c語言基礎中的知識點有關。
2.對於資料結構的學習,建議大家分版塊學習練習,總結使用區別、演算法特點。
3.所有的學習都離不開重複的練習和大量的使用。
4.學會有意識的去培養自己思考問題的邏輯思維、遇到問題的分析能力。
以上就是關於如何提公升資料結構的演算法能力的一些小建議,希望對大家有所幫助。
作業系統方面的堆 棧和資料結構方面的堆 棧
堆疊 在計算機領域,堆疊是乙個不容忽視的概念,但是很多人甚至是計算機專業的人也沒有明確堆疊其實是兩種資料結構。要點 堆 順序隨意 棧 先進後出 堆和棧的區別 一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引...
資料結構與演算法 01 如何學習資料結構與演算法
過於學術的概念定義比較抽象,難以理解。我們從廣義和狹義兩個層面,來理解資料結構與演算法這兩個概念。從廣義上講,資料結構就是指一組資料的儲存結構 怎麼放 演算法就是運算元據的一組方法 怎麼用 我們以圖書館的場景為例來進一步理解 圖書館書籍量十分巨大,首先要分類設定閱覽室,譬如社科類 科技類 報刊類等。...
資料結構 資料結構演算法
分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...