重學數據結構與方法(待更新)

模塊一:方法論

01. 複雜度:如何衡量程序運行的效率?
複雜度細分爲時間複雜度和空間複雜度,其中,時間複雜度與代碼的結構設計高度相關;空間複雜度與代碼中數據結構的選擇高度相關。

02.數據結構:將昂貴的時間複雜度轉換爲廉價的空間複雜度
代碼效率優化的最終目標:採用儘可能低的時間複雜度和空間複雜度,去完成一段代碼的開發。
空間是廉價的,時間是昂貴的。
常用的降低時間複雜度的方法:遞歸、二分法、排序、動態規劃
降低空間複雜度的方法:更改數據結構,採用低複雜度的數據結構解決問題

降低複雜度的三個步驟:
第一步:暴力解法
第二步:無效操作處理:掌握遞歸,二分法,排序,動態規劃
第三步:時空轉換:需要對數據的操作進行細分,全面掌握常見的數據結構,再圍繞問題,有針對性的設計數據結構,採用合理的算法思維,不斷完成時空轉移,降低時間複雜度。

模塊二:數據結構基礎

03.增刪查:掌握數據處理的基本操作,以不變應萬變
要靈活使用數據結構,需要先弄清楚數據在代碼中被處理,加工的最小單位動作,也就是數據結構的基本操作,有了這些動作之後,你就可以基於此選擇更合適的數據結構了。

要設計合理的數據結構,從問題本身出發,思考順序:
首先,我們分析這段代碼到底對數據先後進行了哪些操作
然後,再根據分析出來的數據操作,找到合理的數據結構。

一些操作的理解:

  • 找到要處理的數據(查找)
  • 把結果存到一個新的內存空間中(增)
    把結果存到一個已使用的內存空間中(先刪除內存空間中已有的數據,再新增新的數據)

我們發現,即便是很複雜的代碼,他對數據的處理也只有這3個基本操作:增,刪,查。

只要圍繞這3個數據處理的操作進行分析,就能得出解決問題的最優方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章