資料結構,就是一組資料的儲存結構。
演算法,就是運算元據的一組方法。
資料結構是為演算法服務的,演算法要作用在特定的資料結構之上。
應用層面的原因:在電腦科學和網際網路迅猛發展下,需要計算的資料量越來越龐大。但是計算機的計算能力是有限的,這麼大量的資料計算,需要越來越多的計算機,需要越來越長的計算時間,注重效率的我們需要盡可能的提高計算效率。其中重要的一項,就是使用合適的資料結構和演算法。選用合適的資料結構和演算法,特別是在處理體量非常龐大的資料的時候,可以極大提高計算效率。
個人層面的原因:
首先,學習演算法和資料結構的目的是讓程式設計師建立時間複雜度、空間複雜度的意識,寫出更高質量的**,效能好壞是其中非常重要的乙個評判指標。因為計算機可用的計算資源是有限的,我們當然期盼使用最少的資源來達到最優的效能。就比如說,為了達到發電的這個目的,我們可以燒煤,也可以用風力發電。但是風力發電是更被提倡的,就是為了減少對地球的負擔。那麼特別是對於資料量非常大的應用場景,面對上億級別的使用者,我們就更需要優化**的質量,設計優秀的基礎架構來最大化的利用裝置的計算資源。
其次,掌握這些底層原理能幫助我們在寫**的時候少犯錯誤,在使用一些庫類的時候,即使出現問題也能更快的定位。而且能夠提公升工作的效率。此外,程式的效率也可以得到提公升。比如說,如何實時的統計業務介面的99%響應時間?你可能最先想到,每次查詢時,從小到大排序所有的響應時間,如果總共有1200個資料,那第1188個資料就是99%的響應時間。很顯然,每次用這個方法查詢的話都需要排序,效率是非常低的。但是如果我們用「堆」這個資料結構,用兩個堆可以非常高效地解決這個問題。
再者就是個人追求相關。現在網際網路上的技術文章、架構、開源專案滿天飛,照貓畫虎搞一套基礎框架並不難,實現特定的需求也沒用那麼難。但是有的人做出來的框架,bug很多,效能一般,拓展性也不好。有的人做的框架卻可以開源給那麼多人用。我覺得高手的競爭就是細節的競爭,沒人不想成為高手。而優秀的**,優秀的框架往往就是很多細節堆砌起來的。而且掌握了資料結構和演算法,我看待問題的深度,解決問題的角度就會完全不一樣。大腦思考的能力是人最主要的核心競爭力,演算法就是很能鍛鍊思維的一種手段。
需要引入乙個衡量的標準(metric)—時間複雜度和空間複雜度。
學習資料結構和演算法的基石,就是要學會「複雜度分析」。知道怎麼去分析複雜度,才能作出正確的判斷,在特定的場景下選用合適的正確的演算法。而不是盲目的死記爛背,機械操作。資料結構和演算法本身解決的是「快」和「省」的問題,即如何讓**執行得更快,如何讓**更省儲存空間。
為什麼要學習資料結構和演算法
1.想要通關大廠面試,千萬別讓資料結構和演算法拖了後腿 大廠面試都喜歡考演算法 我們學習任何知識都是為了 用 的,是為了解決實際工作問題的,學習資料結構和演算法依然 2.不願意做一輩子crud boy 一些基礎框架,一般都糅合了很多基礎資料結構和演算法的設計思想 掌握資料結構和演算法,不管對於閱讀框...
為什麼要學習資料結構和演算法?
一 資料結構和演算法是什麼 1 資料結構就是指一組資料的儲存結構 2 演算法就是運算元據的方法 3 資料結構和演算法是相輔相成的,資料結構是為演算法服務的,而演算法要作用在特定的資料結構之上 二 學習的重點在什麼地方 資料結構和演算法解決的是如何更省 更快地儲存和處理資料的問題,因此,我們就需要乙個...
為什麼要學習資料結構
目錄 1 什麼是資料結構?2 為什麼我們要學習資料結構?3 常見的資料他的結構有8種 資料結構是以某種特定的布局方式儲存資料的容器。這種布局方式決定了資料結構對於某些操作是高效的,而對於其他操作則是低效的。所以我們需要理解各種資料結構,才能處理實際問題時選取最合適的資料結構。資料是電腦科學當中最關鍵...