資料結構與演算法是不是1對1的關係,如果是,為什麼?如果不是,請說明原因並舉例?

時間 2021-05-05 15:25:00

1樓:Jalr4ever

請先回答是不是1對1,我想要準確的回答。

-> 不是。

這兩者大體上的關係我知道,主要是1對1有迷惑。演算法是對特定問題求解步驟的一種描述,這裡的特定是指乙個演算法只能對應一組資料結構嗎?

-> 不是,「特定問題」是指一種或一類問題,例如二分演算法不能解決所有問題,貪心演算法不能解決所有問題,但他們能解決「一類」具備該演算法可解特點的問題,詳情參考貪心演算法可解問題的定義。

要實現貪心演算法,有時用雜湊對映,有時用小頂堆,有時用鍊錶,有時用陣列,這跟演算法對應什麼沒什麼資料結構沒什麼必然關係,看的是問題的場景。如何選擇滿足問題需求,使用資料結構更好的實現這個演算法才是目的,例如空間換時間,還是時間換空間,這個是對於資料結構的選擇會影響的。

還有一組資料結構只對應一種演算法嗎?

->還是上面那句話,要實現乙個演算法可以使用很多種資料結構,乙個資料結構也可以實現很多演算法,例如,陣列,動態陣列,鍊錶,棧這些資料結構,貪心可以用,dp 也可以用,回溯也可以用。

-> 「物件導向方法學」與「資料結構與演算法」我覺得並沒有什麼卵關係,你把這個聯絡起資料結構與演算法理解,我覺得是個誤區,前者是程式設計的一種正規化、風格;後者是能把你腦中思考的想法體現在計算機的一種形式。

以上僅供參考,看演算法的定義你也可以知道,並不是說一定得 dp、貪心、分治之類的才算是演算法,任意乙個函式都可以理解為乙個演算法,例如就算是 printf() 它是個演算法,不知題主是否理解了

2樓:峰迴路轉

1對1是關聯式資料庫的一種實體關係,在這裡引用不是十分合適,所以這個問題本身就不太恰當,其次,這個問題對學習和使用沒有什麼實際意義。很明顯,資料結構教材裡演算法佔了大量篇幅,二者是密不可分的。

3樓:Cian

資料結構是為演算法而服務的!實際上,資料結構的定義並不是非常清晰,更沒什麼一對一之說。資料結構是資料在計算機(尤指記憶體)中的組織形式,側重於描述資料元素之間的邏輯與物理關係。

而演算法是建立在資料結構之上,對特定問題的求解步驟的描述。同乙個問題,比如LeetCode的376題,求最長搖擺序列長度,既可以暴力、貪心、也可以使用動態規劃解決。

4樓:AS123

資料結構是資料在記憶體中的存放結構。

演算法是解決問題的方法。

這兩個根本就沒有對應關係。

強行附加關係,只能說在計算機上實現演算法時需要考慮資料結構。

比如,處理圖問題時,可以用鍊錶陣列儲存節點間的連通關係,也可以二維陣列的方式儲存節點間的聯通關係。

5樓:叫我皮卡丘

資料結構是工具,演算法是方法

好比你做菜,資料結構就是鍋碗瓢盆,演算法就是根據做菜的過程行程的菜譜,鍋碗瓢盆可以提高做飯效率,但是非必須,演算法就是達到做飯這一目的的特定步驟,你可以不根據菜譜來,自己瞎糊弄,但是可能做出來的菜沒有那麼好吃

如何評價極客時間上王爭的 資料結構與演算法之美 的爆火?

十一 我只能說我乙個科班的覺得上得比教授好 看完一節課以後對應地去看 資料結構與演算法分析 和演算法導論是乙個很不錯的選擇 教科書 包括國外的教科書 很大的問題就是沒有應用場景這個專欄比較好地解決了這個問題 這下面很多答主真是莫名其妙。英文教程和書和這個課程不都是同一樣東西的不同形式麼。又不貴,免費...

資料結構與演算法 C語言描述第2版裡關於樹的平均內部路徑長計算過程是怎樣的?

Whoum Whour 巧了。我也剛好看到這裡,也沒看懂。主要是關於 所有子樹的大小都等可能出現 這句,以及 二叉查詢樹成立但二叉樹不成立這句 1.關於 所有子樹的大小都等可能出現 這句 這話我有兩種理解方式 第一種,等可能出現 N 2 兩個節點 的尋找二叉樹有兩款 也就是說N 2的出現可能是2 N...

是不是計算機存在的所有資料本質都是0和1 那麼資料是怎麼記錄在固態 機械硬碟裡面的?

ijrys 1.二進位制數字電子計算機儲存的資料都是乙個二進位制編碼串,這個串裡的每一位只有兩種狀態 定義為0 1 當然還有三進製計算機 沒記錯是毛子幹的,這種計算機的每個資料位就是三種狀態了 不過三進製計算機見得不多,現在能見到的基本都是二進位制計算機,所以給你一種感覺是數字計算機的資料都是0 1...