導航:首頁 > 源碼編譯 > 數據結構與演算法感悟

數據結構與演算法感悟

發布時間:2022-08-24 23:03:05

『壹』 數據結構學的到底是什麼,和演算法的關系

  1. 所有的演算法,乃至數學在實際運用中都是要根據不同的數據來選擇不同的方法,所以一般學習過演算法和數據結構的人都會越發的認識到,數據才是程序的中心,只有找到了一個組織數據的最佳方式,演算法的運用才會事半功倍。

  2. 一般來說我覺得先學演算法比較好,但演算法和數據結構都是相輔相成的,要學好演算法要有一定數據結構的基礎,要學數據結構亦要有演算法基礎。但演算法比數據結構更重要一些,因為沒有演算法只有數據結構是沒用的。

  3. 數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由那些成分數據構成,以什麼方式構成,呈什麼結構。

  4. 從計算機的角度講,程序是用一種計算機能理解並執行的計算機語言描述解決問題的方法步驟。程序設計:是分析解決問題的方法步驟,並將其記錄下來的過程。演算法:解決問題的方法步驟。

『貳』 求一篇學習心得體會

一篇好的學習心得,必須要結合自己的實際情況,深入的分析這門學科帶給你的感受,
如果一味的寫理論知識,是得不到高分的,我從網上搜索了一個大二學生學習計算機的心得,你可以參考一下,可以結合你自己的實際情況加以修改。
大一大二兩年軟體開發學習心得
出處:博客園
轉眼間在從大一踏進學校的校門到現在剛剛好兩年了,在這兩年裡面,有學到了不少東西,包括怎麼去獨立生活,怎麼去與人溝通,等等,當然最重要的還是學到了自己想要的專業知識。
大一的時候主要是學習計算機導論和C語言,對於急於想看到效果的我,C語言學起來就比較枯燥,因為C語言編寫出來的程序主要還是在命令行的操作,我很想開發出windows界面的軟體出來,但是沒有辦法,C語言是基礎,沒有這個基礎就往高處想,恐怕夢想不會那麼容易實現。所以我就認真的把C語言的基礎打好,先掌握好裡面的語法,程序控制邏輯和一些基本的演算法,說真的,盡管是比較枯燥,但是一旦陷入了編程中,自然就會發現其中的快樂。
大一第二學期的時候開始接觸NIIT的課程,平時雖然一點作業都沒有,但是我上課的時候不是那麼認真聽課的人,所以課後總是要花時間來看看和理解老師上課的例子,在這個學期中,我們主要學習了C++和Java,都是剛剛開始接觸到面向對象的語言中來,由於對一些面向對象的特性不熟悉,畢竟是剛開始接觸這方面的語言,所以學起來就有點吃力,再加上平時實踐的時間比較少。
終於到了學期的期末,學期期末的項目是使用Java語言開發一個網路的聊天室,在我還沒有開發之前一聽到這個項目,我做夢都沒有想到我可以編寫出一個聊天室出來,但是既然是課程提出來的項目,就一定有它的理由,我也相信最後一定也可以完成它。功夫不負有心人,經過接近一個月的研究,我總於完成了我來到學校的第一件作品。在這個月中,我不斷得查閱資料,詢問老師,平時和同學多交流,終於在最後的評審中,我獲得了全班第二的好成績。通過這個學期的開發中,我幾乎把整個學期學到的知識都用到了我的聊天室裡面,所以在實踐中也等於復習了這個學期所學的內容,而且我發現這樣的實踐,比我在平時課後看書,看資料所學到的還多。
大二的第一學期,進入了資料庫和高級Java的學習,說真的,在學資料庫的那段時期是最煩的,因為每天就學了一大堆SQL的語言,非常的枯燥,都是關於怎麼去查找數據表格裡面的內容,那是時期,因為課堂上聽課了之後覺得都是比較簡單的,所以課後很少去動手。到了後來項目開發中,我才發現資料庫的重要性,整個系統的信息都是存儲在資料庫裡面的,所有的在程序中對數據的操作都是等同於對數據的增刪改查詢操作。
在期末的項目中,根據項目所要求的內容,我不斷翻看以前沒有掌握好的資料庫知識,感覺如果我前面有認真學習的話,到了後面開發項目的時候就不會那麼吃力了。對此,我總結出,如果在前面學資料庫的時候不要單純學習SQL的語言,把資料庫和程序結合起來,如果老師的講課的過程中可以說清楚資料庫怎麼綁定到程序中去使用的話,那麼我想對於我來說我會更加有興趣去學好資料庫,因為只要在程序開發中才可以去體驗資料庫的魅力和重大的作用。
在學期末的J2EE開發電子商務網站中,我學到了很多關於怎麼製作動態網頁的一些必要元素的基本的原理,體會到軟體設計在網站開發中的重要性。
轉眼間來到了大二的第二個學期,可以說在這個學期中,是我最有感觸,學到最多知識,達到質的飛躍的一個重要學期。有了前面幾個學期的學習基礎,我對面向對象語言已經基本掌握清楚,運用起來也覺得沒有什麼特別困難,基本已經入門了,這個學期主要是進入了.net的學習。
好的開發工具是保證效率的一個重要因素,Microsoft
Visual
Studio
.NET
2003就是這樣的一個開發工具,令我剛剛一接觸就深深得愛上了它,它的易學易用令我對編程的興趣倍增,以前學習Java之所以見效不大是因為沒有好的開發工具和環境,總是在環境配置中浪費大量的時間,而真正的涉及到編程很少,所以這也是我以前為什麼學起來沒有那麼有興趣的原因。
我覺得學編程就應該學習它的思想,編寫代碼就應該盡量避免寫出與邏輯無關的代碼,比如界面代碼可以讓機器去自動生成不必浪費時間手動去編寫,所以好的開發工具可以幫助我們做到這一點,只編程邏輯代碼,很多代碼都可以讓機器去自動生成。在.net就可以快速地開發既有漂亮界面也有強大功能的程序。有了這么好的開發工具,所以令我頓時感悟,有種相見恨晚的感覺。
有了好的開發工具後接下來要做什麼呢,當我們為之興奮的時候,當然是很有慾望去做出某某自己很想做的東西,因為你一拿到好的開發工具,就會整天的陷入開發狀態,對其愛不釋手,一開始我是試著開發一個Flash播放器,感覺編寫起來不是編寫起來不是那麼難,因為前面已經有學習Java的經驗了,初次學習.net的時候選擇編寫Flash播放器也是有理由的,一方面是程序比較簡單,另一方面的涉及到的控制項和界面比較多,所以一開始接觸這樣的語言就首先學習怎麼去調用.net平台上提供的控制項,只要掌握好這些控制項,以後編寫windows界面的控制項就簡單很多了。
經過幾天的時間,終於把Flash播放器做出來了,以後想Flash影集的時候都用自己開發的播放器進行播放,感覺別有一翻滋味,因為這就是為自己量身定做的,這就使我再一次感覺到開發的樂趣。
每年的11月份都有一個高校杯的軟體設計大賽,這時間正到了5月,我們屈指一算,離比賽的時間還有6個月的時間,這段時間我正處在開發的興奮期,所以對這個軟體設計比賽就感興趣起來,第一是可以知道自己的編程程度和其他人的距離,第二是可以利用這個一個項目實踐來鍛煉自己的開發技能,第三是可以鍛煉團隊的合作。以前幾乎都是自己開發的軟體,很少和其他人合作,所以就令我想到這種開發模式將來帶到工作會另自己處於不利的地位,現在不是都講究團隊的合作么。
經過思考後,我找來另外的兩個志同道合的同學,利用五一放假的時間想好主題,還有進行需求分析,最後定下來「多媒體日記本」這一項目。定好題目後我們就進行了分工,一個人負責資料庫方面,一個人負責界面的美化和界面的布局,另外一個負責功能的實現,分好工後我們立刻就展開了工作,在合作的過程中,我們學到了許多課本上沒講的或者只是粗略帶過的知識,有些特別的技術難點還要到網上去搜索,查閱有關的資料,在語言方面我們幾乎把.net裡面的基本框架和特性都用上了,這樣對於我們學習就達到了事半功倍的效果,邊學邊做學到的知識可以很快吸收,又可以很快得運用的實際中去,這是我通過這個項目感觸最深的。很快就到了期末,學校舉行「IT精英杯」軟體大賽,我們小組終於不負眾望,拿到了一等獎的好成績。
經過這次我比賽我總結出心得,首先比賽的題目要定好,一方面是開發的軟體要有實用性和市場前景,另一方面還要在實用性上加上點創新,給人耳目一新的感覺,我覺得只要先抓住好這兩點,做出來的軟體才會給人留下好的印象。
利用暑假的時間,我又參加系裡面組織的軟體工程培訓,又一次在開發項目中學到了許多許多看書只能朦朧懂的知識。
轉眼間大三第一個學期就開學了,回顧這兩年來學習軟體開發的經歷,寫了這樣的一遍心得,一方面算是對自己的總結,另一方面也可以拿出來給大家參考和交流。最後我還是要再歸納一次,總結出如何才可以比較容易地進入學習狀態達到快速開發的目的。
1.
打好基礎,掌握好C語言C++基礎的語言,對學習數據結構和演算法有很大的幫助。
2.
面向對象是高級也是最流行的語言,所有的面向對象語言幾乎都是通用的,結構和特性都差不多,只要掌握和歸納好它們的一些共同的特性,哪怕將來轉向其他的語言都是輕而易舉,得心應手,達到融會貫通的效果。
3.
好的開發工具是你提高開發效率,提高編程興趣的前提,學習語言的過程中還應該研究怎麼利用開發工具有效地提高開發的效率。
4.
善於總結,在開發過程中我們可以總結出許許多多規律性的東西,這些規律一方面可以讓我們避免在以後的開發中犯同樣的錯誤,另一方面對我們掌握其他的規律都是有所幫助的,規律都是交叉在一起的。跟著規律走,實事求是。
5.
項目開發是最好的學習方法,這一點是我最有感觸的,軟體開發是實踐性很強的活動,但靠理論知識學起來比較吃力,而且枯燥無味,學習種理論學習和開發實踐的比例應該是1:2,而且是交叉進行。這樣才可以比較快的掌握一個知識點。
6.
團隊合作,現在的項目幾乎很少一個人去完成,頻繁的溝通和密切的配合是成功的必要條件。
以上回答你滿意么?

『叄』 數據結構與演算法的學習心得

數據結構與演算法是相輔相成的,每一種數據結構都有它對應的幾種常用演算法,數據結構與演算法必須同時學。
按照書上的順序學習,通常是鏈表→隊列→堆棧→樹→圖的順序,難度循序漸進。一定要自己上機實驗

『肆』 數據結構和演算法為什麼這么重要

演算法都是從生活里得到的,生活里用的很自如,應用到程序里一樣會很方便。
比如最簡單的,中國有那麼多省,每個省有那麼多市,每個市有那麼多區縣之類的,看到一個小地方,怎麼才能知道它在哪,很明顯,去看它在哪個區,哪個市,哪個省。
這就是樹的作用,從子節點通過父節點去確定它的位置。這個同樣應用在文件管理,還有特殊的比如要求設計個資料庫,能夠體現部門,小組的包含關系,很簡單,在小組裡面加個父節點的欄位就可以了。

再比如查字典,給了一個字,怎麼才能查到它?通過讀音,知道它的首字母,就很容易的去從首字母找到它。如果字典是亂的,就完全無從下手,這就是hash演算法的東西,通過能夠區分出來的特徵,縮小查找范圍,加快查找效率。
同樣的很多,都是可以用到程序里的,很容易理解

『伍』 求一數據結構課程設計心得體會。

資料庫課程設計大賽的塵囂漸漸遠去,懷著對這次大賽的些許不舍,懷著對當初課程設計開始時候的豪情萬丈的決心的留戀,懷著通過這次課程設計積累的信心與鬥志,我開始寫這篇文章,為自己的足跡留下哪怕是微不足道但是對自己彌足珍貴的痕跡並期望與大家共勉。

首先,讓我的記憶追溯到大二暑假,在老大的指引下(老大勸我學asp.net),我接觸到Microsoft 公司的.NET產品。那個時候我已經學過vc和asp,因為windows程序設計實驗的課的關系,接觸過vb,但是沒有專門去學他,因為習慣了c++裡面的class,int,覺得vb的sub,var 看著就不是很順心。我是一個好奇心很強的人,突然看到了一個號稱「.net是用於創建下一代應用程序的理想而又現實的開發工具」,而且主推c#語言,由於對c語言的一貫好感,我幾乎是立刻對他產生了興趣。我就開始了對c#的學習,任何語言都不是孤立存在的,所以數據交互是很重要的,暑假的時候我把我們這學期的課本資料庫系統概論看了一遍。我記得以前用c語言編程的時候,數據是在內存中申請空間,譬如使用數組等等。很耗費內存空間。這個時候就是資料庫站出來的時候啦,於是我又裝上了sql server2000,以前學asp的時候用的是access,那個時候只是照著人家做,理論是什麼也不是很清楚。

通過一個暑假的學習,基本搞清楚了理論方面的東西,具體怎麼用也不是很清楚。但是這為這學期的課程設計打下了鋪墊。

來到學校後,隨著這學期的資料庫課程大賽開始了,我有一個看法就是我自己應該具備的能力不是我會多少,而是我應該具備快速學會東西的能力。遇到什麼就學什麼。我們有時候很容易被一些專業名詞說嚇著,包括什麼建模,軟體工程,數據分析,數據挖掘等等。我身邊就有很多同學被這些紙老虎所唬住,而沒有勇氣去接觸他們,總是說這個太難了之類的退堂鼓的話,他們低估了自己的潛力同時也壓抑住了他們自己的好奇心。其實都是紙老虎,又不是什麼國家科研難題,只是去用一些工具,發明工具是很難,但是用一個工具就容易多了,just do it!我記得我做這個資料庫之前,我們老師說要做好前期分析,我就在網上搜索用什麼分析工具好。最後我選擇了roseUML建模工具。在此之前,我腦袋裡面沒有軟體建模的思想,什麼UML建模對我而言就是一張空白的紙。但是真正接觸後並沒有想像的那麼難,有什麼不懂的上網去搜索,這是一個信息橫流的世界,有google,就沒有不能解決的知識難題。以及後來的資料庫分析的時候用到的powerdesigner也是一樣。

開發的時候我想過用什麼架構,c/s模式?模式有很多,怎麼選擇?我就上網搜索現在最流行的架構是什麼。結果搜到了MVC架構,就是你啦。我決定用這個架構,不會,沒關系,咱學。Just do it!前期工作準備好後,那麼我就得把我暑假學的.net加以實踐。這個時候我更加深入的了解了利用ado.Net操縱資料庫的知識。並且對資料庫裡面的存儲過程有了比較深入的了解。經過大概2個多星期的奮斗,我完成了我的資料庫課程設計--基於.net數據集的圖書館管理系統。並最後非常榮幸的獲得了大賽的一等獎以及以及新技術應用獎。

與其臨淵羨魚,不如退而結網。這次資料庫課程設計給我的最大的印象就是如果自己有了興趣,就動手去做,困難在你的勇氣和毅力下是抬不了頭的。從做這個資料庫開始無論遇到什麼困難,我都沒有一絲的放棄的念頭。出於對知識的渴望,出於對新技術的好奇,出於對一切未知的求知。我完成了這次資料庫課程設計,不過這只是我學習路上的驛站,未來十年.NET的核心技術就是XML[至少微軟是這么宣傳的],我會繼續學習它,包括jave公司的j2ee我也很想試試,語言本來就是相通的,just do it!語言並不重要畢竟它僅僅是工具,用好一個工具並不是一件值得為外人道的事情,主要是了解學習思想。古語說的好:學無止境啊!

我很慶幸我參加了這次資料庫大賽,讓我確實打開了眼界。

『陸』 如何學習數據結構與演算法

1、記住數據結構,記住演算法思想(是什麼)

記住數據結構最直觀的東西;記憶該數據結構的定義、性質、特點等。很多東西的理解和創新都是以記憶為前提的。


2、進行大量相關編程練習,用編程語言去實現某一數據結構上的演算法(怎麼辦)


很多時候,理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的編程語言實現。


3、“記住”特定情景下,利用某一特定的數據結構,去解決問題 (為什麼+怎麼辦)


每介紹一種數據結構,浙大數據結構與演算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種數據結構為什麼會出現”。有的是為了實現特定的操作,有的是為了時間和空間上(大部分考慮的是時間復雜性)效率的更高(所以,沒事的時候,分析一下演算法的時間復雜性)。這些東西,我們也須理解記憶。每一數據結構都有其特性,去解決某一類問題,我們需要去記憶,去感悟。


4、形成一個屬於自己的知識體系


如何去“記住”(記好筆記,多多復習);在學習過程中,遇到挫折,產生挫敗感該如何處理(這個是必然會發生的,總有難以理解不會的地方);如何進行心態方面的調整(欲速則不達,不過也有”敏捷學習“的概念)。

『柒』 電腦培訓分享數據結構與演算法知識

對於大多數的程序員來說,在學習數據分析等技術的時候需要先了解關於數據結構以及演算法等知識點,下面我們就給大家簡單介紹一下什麼是數據結構?什麼是演算法?



大部分數據結構和演算法教材,在開篇都會給這兩個概念下一個明確的定義。但是,這些定義都很抽象,對理解這兩個概念並沒有實質性的幫助,反倒會讓你陷入死摳定義的誤區。畢竟,我們現在學習,並不是為了考試,所以,概念背得再牢,不會用也就沒什麼用。

雖然我們說沒必要深挖嚴格的定義,但是這並不等於不需要理解概念。下面我就從廣義和狹義兩個層面,來幫你理解數據結構與演算法這兩個概念。

從廣義上講,數據結構就是指一組數據的存儲結構。演算法就是操作數據的一組方法。

圖書館儲藏書籍你肯定見過吧?為了方便查找,圖書管理員一般會將書籍分門別類進行「存儲」。按照一定規律編號,就是書籍這種「數據」的存儲結構。

那我們如何來查找一本書呢?有很多種辦法,你當然可以一本一本地找,也可以先根據書籍類別的編號,是人文,還是科學、計算機,來定位書架,然後再依次查找。籠統地說,這些查找方法都是演算法。

從狹義上講,也就是我們專欄要講的,是指某些著名的數據結構和演算法,比如隊列、棧、堆、二分查找、動態規劃等。這些都是前人智慧的結晶,我們可以直接拿來用。我們要講的這些數據結構和演算法,都是前人從很多實際操作場景中抽象出來的,經過非常多的求證和檢驗,可以高效地幫助我們解決很多實際的開發問題。

那數據結構和演算法有什麼關系呢?為什麼大部分書都把這兩個東西放到一塊兒來講呢?

這是因為,數據結構和演算法是相輔相成的。數據結構是為演算法服務的,演算法要作用在特定的數據結構之上。因此,我們無法孤立數據結構來講演算法,也無法孤立演算法來講數據結構。

比如,因為數組具有隨機訪問的特點,常用的二分查找演算法需要用數組來存儲數據。但如果IT培訓http://www.kmbdqn.com/選擇鏈表這種數據結構,二分查找演算法就無法工作了,因為鏈表並不支持隨機訪問。

數據結構是靜態的,它只是組織數據的一種方式。如果不在它的基礎上操作、構建演算法,孤立存在的數據結構就是沒用的。


『捌』 我們為什麼要學數據結構與演算法,設計模式

數據結構是非常重要的 ,舉個例子,如果要在一堆數中查找一個數,挨個遍歷查詢,是非常有失效率的,使用平衡樹或者哈希表,則能高效查詢,尤其是數據量極大時,譬如幾十萬到多少億的數據量,將會有極其明顯的效率差距。可能高效的程序只需要1ms,暴力查找要幾小時
類似的例子還有很多,演算法也是如此
而設計模式,只有做大型工程才有用,能夠更合理的組織代碼,便於開發和維護,小程序是體現不出來什麼作用的

閱讀全文

與數據結構與演算法感悟相關的資料

熱點內容
什麼app零粉分發視頻有收益 瀏覽:162
肯亞程序員 瀏覽:638
新科源碼 瀏覽:659
如何判斷伺服器有沒有帶寬 瀏覽:41
天正建築批量刪除命令 瀏覽:94
cad最下面的一排命令都什麼意思 瀏覽:456
pythonimportcpp 瀏覽:850
W10的系統怎麼給U盤加密 瀏覽:370
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:428
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:229
python中的雙色球 瀏覽:168