1樓:wuyu1998
演算法 + 資料結構 = 程式
學習任何東西,基礎是最重要的。因為沙礫上,是無法建設高樓的。
如果你不打算靠程式設計吃飯、對計算機沒有興趣,計算機的基礎知識確實不用學習。
2樓:氷泠
有,資料結構當然有用,想做為乙個合格的程式設計師,不能整天只用陣列,堆,棧,圖,樹,都得會,這會指的不僅僅是會用,你不能說我寫了乙個LinkList,呼叫了一下介面就說會了,會不僅僅會用,還有理解,最好就是能按照自己的總結寫出部落格來教導別人.
日後工作有時會需要閱讀原始碼,原始碼便少不了資料結構,可以了解別人怎麼寫,怎麼用,然後優化過來,就變成了自己的東西.
總的來說,你不學資料結構,可以,只是,瓶頸就在那,不僅看得見,而且摸得著,那手感,賊硬.
3樓:
給你個簡單的實際場景的題目吧:
你的客戶要將你們的業務對接到某個企業級開放平台,比如釘釘這種你需要將客戶公司的內部組織結構和人員資訊和你所開發的業務進行同步,便於客戶使用
- 需求2.1:需要阻斷潛在的非法操作
需求3:為了保證使用者體驗,所有操作要在0.2秒內完成- 需求3.1: 組織結構資訊是敏感且重要的資訊,在有速度要求的同時要保證所有修改操作的事務性
需求4:部分客戶可能會擁有規模巨大組織結構資訊回想一下學過的資料結構和演算法,有什麼能幫助你搞定這個任務嗎?
4樓:consumer
有用,沒有一點演算法和資料結構的知識,寫出的程式必然是沒有靈魂的行屍走肉。
我在大二學資料結構的時候總覺得沒什麼用,等到大三的時候才發現這門課的重要性。
陣列,鍊錶,堆疊,佇列,樹,圖這些東西在我看來是很玄妙的東西,這些簡單的資料結構給我感覺就像八卦圖一樣,不僅能很多計算機方面的知識,更能夠解釋很多自然的現象。
另外,把這些東西學好,將來無論是學習什麼語言,都會感覺很輕鬆,因為這些資料結構本身就是從計算機的底層抽象出來的一種資料存放形式,無論將來時開發或者是運維還是測試,學好資料結構,對你都會有莫大的幫助。
5樓:左龍祥
這種東西吧,用到了才知道有用。我是個最低階的碼農,就是寫增刪改查的那種,使用者量一般不破萬,我幾乎覺得我用不上資料結構這些東西。
直到上個月,我接到了乙個訂單,傳銷公司的。要做個分銷系統。就是那種我下級,我下級的下級,我下級的下級的下級的下級都會有提成那玩意。
然後我研究了半天,知道了乙個叫二叉樹的東西。
然後。。。然後我寫業績查詢的時候就是二叉樹最底下的乙個使用者開始,乙個個挨著向上查。現在大概500行使用者,查詢速度已經15秒了。
我覺得如果我資料結構夠好,應該不會這麼麻煩。但是現在哭兮兮。
PS業務需求:使用者A有使用者B和使用者C兩個分店,使用者B有使用者B1,B2,C有C1,C2兩個分店,B1有B1A乙個店。(二叉樹)
這時候B1又新增了B1B這個店,滿足條件B1 的12分店均有店鋪,產生一次獎勵給B1
B1的上面的B滿足左右均有店鋪,產生一次獎勵給B
B上面的A滿足左右均有店鋪,產生一次獎勵給A
6樓:flyingfish
有些崗位就是喜歡招ACM金牌。
資料結構和演算法,或是流行的概率演算法都是不可或缺技能。懂這些技能的工程師和不懂的差距很大。
雖然工作中遇到的次數比較少,但是遇到的時候,你不需要重新學習,而是直接搞定。遇到後你才能明白他的重要性。
7樓:Gavin
有用,非常有用。資料結構中的一些典型的結果,其實就是在日常中經常使用的,了解這些基礎知識是非常重要的。比如線性表,雜湊表,這些往往能夠對應到變成語言中的類庫中的list和map。
很多基礎資料結構的確不需要你自己實現,但是了解原理還是很重要的,這樣你才能夠用對。
此外,c語言比較慘,沒有什麼這樣的類庫,不過其實也不需要自己實現,抄Linux核心裡面的實現就行。
8樓:灬星
本人也是程式設計小白,如果程式設計只在應用層確實資料結構可以先跳過不需要系統的學習。但不管是前端還是後端都會有對資料的操作,並且想更了解機器執行的原理也需要掌握資料結構,所以後期還是要掌握資料結構相關的知識的,嘿嘿。不過純屬個人想法,有不對的一樣大佬指正。
9樓:賀小五
有,非常有用.
資料結構,是用來表示,元素之間關係的,
資料:表示是資料的集合
鍊錶:表示資料之間一對一的關係
樹:表示資料之間一對多的關係
圖:表示資料之間多對多的關係
這就算在現實生活,也是最基本的邏輯關係,你說如果你連這個都不知道,怎麼理順七大姑八大姨之間的關係呢?怎麼理順同學,同事之間的關係呢?怎麼理解組織架構?
我舉個例子吧,
A認識 B,但是不認識 C,B 認識 C
如果你要在紙上畫出他們關係大概如下:
A->B->C
上面就是鍊錶,如果你不知道,別人跟你說,這個東西是個鍊錶,你心裡肯定是懵逼的,什麼是鍊錶?鍊錶什麼鬼?
如果你學過資料結構,那麼別人說,這是個鍊錶,你腦子裡面馬上就能浮現乙個鍊錶的規則跟大體圖形
10樓:可以是假名嗎
看你的層次,你就是一司機,知道怎麼開車,和你就是一程式設計師,知道怎麼引用庫什麼的都差不多。
但你要做賽車手,有些知識就必須了解了,最少要能和工程師溝通反饋。做高階程式設計師,這些基礎就必須知道
11樓:florent
大學裡面開的所有計算機課,都是計算機基礎課,沒有沒有用的,都是安身立命,將來有所作為的必備知識。
如果你學了感覺沒用,最可能的就是你沒學明白。如果你這門課學明白了還覺得沒用,很可能是其他的課沒學明白…
12樓:x2zh
Bad programmers worry about code. Good programmers worry about data structures and their relationships.
13樓:召伯樹
如果只是搞前端或者用框架搭積木的話的確不需要(斜眼笑
顯然說這話的人沒怎麼搞過前端。
早年,和後端同事一起工作,我負責前端基礎設施,他們負責套模板寫業務介面和實現後台介面。
後台傳來乙個 _parent : pid 的樹結構,把它轉換成 children 巢狀的樹結構。這算挺基礎吧,然而他們不會 ,每次都要我乙個乙個教。
需要對樹結構進行 filter ,這在前端也挺常見,比如根據使用者輸入的篩選條件對資料進行過濾什麼的。遍歷乙個樹,這也挺簡單吧,然後他們也不會。於是我又需要乙個乙個教。
當然,我教可不是白教的,這得寫在工作日誌裡面,專案完成之後,這得分錢。
於是結論就是,不會資料結構的人會被那些會資料結構的人分錢。
後來,我專門給他們寫乙個函式進行轉換和遍歷,把這東西寫在常用的工具函式裡。
他們會調函式以後,就再也沒為此找過我了。我之後也就沒靠這分錢了。
於是結論就是,如果只是調介面的話,那確實資料結構也沒有必要。
14樓:
學習資料結構就是讓你理解計算機系統等基礎知識的。比如你不理解棧這種資料結構,你就沒法理解程式執行的原理。
如果你想成為合格的程式設計師,必須學習計算系統機基礎知識,包括資料結構和演算法。
15樓:支援向量機
計算機裡到處都是資料結構,到處都是鍊錶管理的記憶體,到處都是棧,知識圖譜和社交網路到處都是圖結構,圖形學空間優化裡到處都是樹,陣列都算資料結構。你說有用不
16樓:AmandaZhao
這和你學程式設計的用途和以後的職業規劃有關。
如果以後想比較多的做前端,搞visualization,資料結構可能不是很必要。
但對於其他領域,資料結構其實很有幫助,屬於早晚得會那種…
17樓:靖咯咯
程式設計是什麼?
一種人類面向機器的表達方式,其最終目的是希望計算機能夠「讀懂」人類的意圖,並且無條件執行接收到的「指令」,而這些「指令「就是通過程式設計來表達的。
計算機計算的本質是什麼?
「玩資料」。將資料進行各種轉換、各種計算,最終得出結果。
計算得出的結果又有什麼用呢?
可以 build 整個世界(網際網路)。
我們先來理解人類世界的本質是什麼?
人與人之間進行資訊的互動,然後人類根據接收到的資訊,執行動作。而由人類動作導致的實踐,就是整個人類世界了。
這裡所有的計算都是通過人腦完成的,輸入是聲音、視覺、氣味、溫度等,人腦計算的結果用來觸發「決策」,也就是「我下一步該執行什麼樣的動作」。
那計算機計算得出的結果又有什麼用?沒錯,本質也是觸發「決策」,舉個例子:
C端使用者平常看到的知乎是長這個「樣子」的:
電腦端知乎首頁
「樣子「 包括:內容 + 樣式,你可以理解為人類的衣服,決定今天穿什麼衣服的是人類,那決定使用者看到的知乎首頁裡面是什麼文字內容,是什麼顏色,什麼布局,依靠的就是計算機計算的結果
剛剛說了,計算機計算本質就是 「玩資料」, 怎麼個玩法是由人類「指令」決定的,那玩的資料又是什麼呢?
面向機器的角度而言,計算機計算的資料只有 0 和1 ,而面向人類程式設計的角度而言,計算機操縱的資料是這些:整數、浮點數、字元等基本資料型別,而資料結構則是這些基本資料型別物件之間的關係,比如順序表(陣列)、鍊錶、棧、佇列、樹、圖
為什麼要有這些資料的結構呢?
根本目的是能夠完成更加複雜的計算。
你讓計算機計算 「1+1」,那直接使用基本資料型別的資料物件就可以。
但你想讓計算機給 「1~100從小到大排個序」,基本資料型別的資料物件是完全不夠用的,最簡單的1~100 這100個整數你都不知道用記憶體中怎麼表達(如果沒有陣列這樣的資料結構),更別說在記憶體中實現經典的排序演算法了。
綜上,資料結構是以後從事任何程式設計工作的非常非常核心、基礎、重要的科目。
不懂資料結構,就像你學漢語只學拼音,不懂中文的句子結構一樣,壓根無法進行表達。
18樓:BlackPeopleChina
有用,剛開始你不會有什麼感覺,到後面就知道了,各種演算法都要學,還有資料的儲存方式等等,我也學過,但是又都還給老師了,資料結構很實用的,但是學好真難,我們學校(大專)現在都不開了,教了也聽不懂,而且像我們這樣的大專生來說只要能編寫出來程式就行,對效率要求不是很高,但更多公司對這方面還是有要求的……。
這種東西要學,但是也不能死學,重要的是培養自己的興趣,多思考。
19樓:Kylin
特別有用,不懂資料結構很多程式設計邏輯理不清的。
hashmap,key-value儲存,再往深處說,key可以放物件。value可以放list等等。還有用redis的時候,資料結構還會涉及到zset。
用list存會有重複資料,這個時候如果了解set結構,,直接用set存,天然就是去重的,方便簡潔。
剛入門程式設計的人有必要學習資料結構嗎?
程式設計師吳師兄 建議培訓完再敲過乙個完整的專案後,再系統的學習一波資料結構,然後再看一下你之前敲的那個完整的專案,你會有很深的感受 資料結構真TM有用,這個資料介面原來能這樣設計 資料庫這樣儲存更高效等等。 dabbler0606 重要,很重要,資料結構直接影響做出乙個專案的質量。說更嚴重點資料結...
學習前端,需要刷題 用js求解資料結構之類問題 來提公升嗎?
十日 首先,你學習前端,是為了工作,那你提公升自己,是要根據崗位和實際需要來決定的。首先確定一點,演算法,在日常的前端開發中用的確實不多。但是,對於前端架構,也是非常重要的乙個技能。如果你是乙個剛入門的前端,那你不用執著於演算法,因為限制你技術的,更多的是這門語言本身的東西。如果事件閉包這些東西都搞...
學習資料結構有什麼好的教程?
資料結構和數學很類似都是比較抽象的,而往往實際問題都是非常複雜的,所以要先掌握最基本最抽象最特殊的規律。學習資料結構首先要掌握一門計算機語言,起碼要知道語法,能利用它完成一些基本程式,就像首先要掌握數學最基本的加減乘除,定理之類的規則。其次要知道資料結構和演算法是分不開的,學習資料結構的同時也需要一...