如何理解「程式 演算法 資料結構」這句話?

時間 2021-05-09 17:37:36

1樓:小凡

本來想來找答案的,後來感覺還是把十幾年工作經驗簡單分享下。

程式=資料結構+演算法,這句話呢,如果放在現實世界,有個簡單的小例子,假如有件事,我需要知道附近有多少個人。

這個問題,在計算機的世界應該怎麼表達,首先應該有個地圖。地圖的組織結構就是資料結構了,然後就是怎麼找到這些人,這就是演算法。這裡的解決方案,通常的資料結構是R Tree, 而演算法是由R Tree,決定的。

所以,當代的程式,大部分是由資料結構決定的,而不是演算法,演算法大部分的時間是被資料結構決定了,或者是侷限了。一種資料結構的發現,往往帶來一場革命。革命這詞真不誇張。

想想以前B+樹帶來了MYSQL, R樹讓geoip變成現實 ,Merkle Tree, 讓Git,IPFS等來到了我們的世界,LSM Tree, 是RocksDB, LevelDB的核心,而這兩個軟體,又是流式資料處理狀態儲存的核心部件, 每個資料結構都是來解決現實世界的問題的。而很多問題,目前仍然解決不了,大部分情況下,是沒有找到資料結構.

而高階的資料結構,通常由簡單的資料結構組成 ,合併而成,或者增加一些新特性.

所以, 應用多種高階資料結構,發現新的資料結構,就是當代的程式設計師和計算機科學家主要的任務了。這玩意,能推動人類社會進化。

2樓:Someday

沒想到有一天我遇到了這個問題,跟學文的女票解釋什麼叫 「程式=演算法+資料結構」。

那麼什麼是演算法?什麼是資料結構?我試圖用圖書館找書的例子解釋但是失敗了,原來這個例子還是不夠生活化,那麼我能想到最形象的例子,應該是做菜了。

1、「程式的目的是解決問題「

就比如你做菜,解決了餓這一生理問題。

2、」演算法是解決問題的步驟「

你學習乙個菜譜,在XX分鐘加入XX多少克,烤製XX秒,是乙個固定的流程。當然了,如果你做的是中餐,適量少許引入了隨機性,那就變成了隨機性演算法,但也是演算法。

3、」資料結構是管理資料的工具「

你做一道菜,總要用到柴公尺油鹽,總要用到肉菜公尺麵,這是原料,為了方便原料的取用,你需要乙個櫥櫃,有序地擺放這些工具,提高效率。

4、」程式=演算法+資料結構「

你要處理按照步驟(演算法)來處理這些原料(輸入),讓他們變成一道菜(輸出)。所以程式最終總是為了處理一些資料,得到一些輸出,演算法告訴你步驟,資料結構提供給你輸入資料,你按照演算法運算元據得到了輸出,便個程式。

3樓:

「演算法「 -> 邏輯

「資料結構「 -> 儲存

當然一般而言程式還有通訊這東西。。。

其實程式=演算法+資料結構用在OI上是很適用的。。。

4樓:buduo buduo

不能說過時吧。比如從牛頓到麥克斯韋再到愛因斯坦。不能說誰是過時,只能說是解決問題的領域不同。

程式簡單粗暴的看就是對資料的處理,所以可以從微觀來看程式是:「資料 + 操作」,中觀來看程式:「資料結構 + 演算法」。

從巨集觀(工程)看程式:「 物件 + 訊息」。

5樓:

不需要理解,寫多了自然就懂。如果沒寫過程式就深刻理解了這句話,反而比較奇怪。

計算機不是政治馬哲,需要靠實踐和思考,不看參悟。

6樓:葉飛影

這就相當於:"作文=語法+詞語"

你不能說它有錯,但這話也沒什麼意義。

因為你掌握了語法和詞彙並不意味著你會寫作文,同樣你掌握了演算法和資料結構並不意味著你會寫程式。

7樓:

好吧,作為曾經搞演算法的,對演算法和資料結構的理解是演算法可以想象成從廣州到深圳,該走哪條路最近。而資料結構可以理解成這段路上你是走過去還是開車過去,不管用什麼方式,只要路線(演算法)對了,都能到深圳,只是所用的時間上有差別而已。對於題主說的程式嘛,沒有啥理解。

演算法資料結構中有哪些奇技淫巧?

獨銘鳴 主席樹區間k大,笛卡爾樹單調棧優化的O n 建樹。堆,斜堆,左偏樹,莫隊。第一次見莫隊,覺得好厲害啊,真tm優雅的暴力,然後遇到了個普通莫隊搞不定的題 歷史研究,然後就知道了個回滾莫隊這麼個東西。第一次寫堆,感覺這東西好厲害。後來知道了左偏樹,怎麼能這麼短。再後來,斜堆,emmmm,還能這麼...

演算法資料結構裡面有沒有什麼有趣的內容?

Striker 看到下面已經有回答說了穩定婚姻問題,一般的就是n個男生n個女生,每個男生都會對所有女生有乙個偏好順序,每個女生也會對所有男生有個偏好順序,現在問題是想找乙個穩定匹配,穩定 的意思就是不存在一對男生女生,在這個匹配中他們沒有在一起,但是各自都更喜歡對方勝過自己在這個匹配中的伴侶,或者按...

怎麼看待程式設計師普遍缺乏資料結構和演算法的知識?

關明 我們公司的程式設計師應該不會,因為作為乙個面試官,我不太想以後跟同事交流技術的時候,還得解釋什麼是鍊錶 什麼是堆 什麼是時間複雜度,等等等等 23號新秀 因為工作中真的用不到啊 我舉個誇張的例子,你說hashmap查詢速度快,但是公司的資料歷來都是用list存的,就你小子乙個新來的知道hash...