做者:lalalouye(20172329王文彬)
2018-2019年大二Java程序設計與數據結構課程總目錄:第一週 第二週 第三週 第四周 第五週 第六週 第七週 第八週 第九周 實驗一 實驗二 實驗三 Java哈夫曼編碼實驗php
20172329 2018-2019《Java程序設計與數據結構》課程總結
又過了一個學期的Java課程的學習,數據結構的瞭解也隨着這學期的學習逐漸變得深刻,本身的編碼水平也獲得了一些提高,雖然這學習在學習Java的過程當中發生了一些意外,發現本身在學習一些知識的細節點的時候,理解會出現一些問題致使本身在後面的幾回作題中發生了滑鐵盧,所以發現學習編程並非只須要會編程,理論指導實踐這句話是沒錯的。加油!html
每週做業連接彙總
- 第一週總結
- 初步接觸軟件開發與數據結構的基本內容,瞭解到軟件=程序+軟件工程,同時學習到如何對於算法效率進行分析,大O記法的表示,時間複雜度的學習,其中時間複雜度的分析爲重點!
- 第二週總結
- 在第二週,接觸到了在上學期在四則運算變成中涉及的一個數據結構,棧——先進後出的數據結構,在這一章咱們不只僅須要學會用棧,並且還用以前學習的數組與鏈表進行對於棧的實現
- 第三週總結
- 在第三週學習了一種新的數據結構——隊列,先進先出的一種數據結構,同時運用數組和鏈表進行對於隊列進行實現,同時學習了雙端隊列,循環數組。
- 第四周總結
- 在第四周學習了對於列表數據結構的學習,運用數組和鏈表進行實現,
- 第五週總結
- 學習了多種排序和查找算法,並進行運用以前學過的方法進行從新編寫,而且運用到例子中。
- 第六週總結
- 瞭解了樹這一種數據結構,這是咱們接觸的第一個非線性數據結構。
- 第七週總結
- 學習了樹這種數據結構中的一個特例,二叉查找樹,並運用以前學習的知識對其進行實現。
- 第八週總結
- 學習了優先隊列和堆的相關知識,並運用以前的方法對其進行實現。
- 第九周總結
- 學習了圖的相關知識,而且瞭解了不少種算法,好比Prim算法,Dijkstra算法。
THE BEST AND THE MOST
自認爲寫得最好一篇博客是?爲何?
- 在這學期新的一學期對於編程的學習,讓我更加了解到編程的魅力,本身能夠寫一些本身想寫的東西,並且我以爲其實在編程的過程更像是一種在描繪本身世界的狀態,由於當咱們充分處於本身的邏輯世界中,發現本身就是這一片地方的霸主,不少在現在咱們在想盡辦法改變的規則,好比在玩遊戲中咱們就是開發者,不須要去花錢去玩,本身就能夠體驗到很棒的體驗,或者又是由於本身能力現在的還不是很熟練,就以爲還有不少地方能夠探索,懷揣着這份興趣感,因此更要加油,既然要選出一篇自我感受最好的博客,我以爲應該是這一篇:2018-2019-20172329 《Java軟件結構與數據結構》第五週學習總結
- 這篇博客是在學習排序和查找這一章節之後所寫的,這一章的內容不少,並且不少知識點也很難理解,這一週我是花了不少時間去學習這一章節的,由於查找算法的編寫,一些很容易就能夠理解,可是還有一些算法始終在一部分就很讓我感受到學習過程很困難,我也是找了不少資料和老師以前給咱們的網站進行動態圖的理解從而理解這些排序和查找算法,由於當咱們搞懂這些算法的原理的時候,也就是當咱們邏輯變得清晰的時候,每每在編寫代碼的時候就會變得容易。
做業中閱讀量最高的一篇博客是?談談經驗
實驗報告連接彙總
- 實驗一報告
- 關於在以前學習的幾種數據結構的熟悉以及對於學習過的排序算法的運用。
- 實驗二報告
- 對於樹這一種數據結構的深刻學習,包括瞭如何去創建一顆二叉樹,決策樹,以及對於紅黑樹代碼的分析以及算法的理解。
- 實驗三報告
- 對於查找算法以及排序算法的再理解以及新的幾種算法的補充以及實現。
- 哈夫曼編碼實驗
- 關於哈夫曼樹的創建以及經過哈夫曼樹進行編碼而且對於一段文檔進行加密的實現。
團隊項目報告連接彙總(烏諾紙牌)
statistic.sh的運行結果:
加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
- 每一次看都有每一次的體會,去年看了這片文章後,醍醐灌頂,這讓我想起了以前同窗說的一句話,是你寫了10000行代碼仍是把1行代碼重複了10000遍,我以爲這句話說的真的很是棒,說決定一個程序員能力水平的是代碼量,其實也沒有什麼問題,就像在學習英語過程當中,詞彙量是一個很大的坎,可是程序之因此區別於其餘學科,由於它的可重複性很高,或者就是一我的真實的編碼水平其實假如不讓他去寫程序,能力只有他本身知道,學習是一個持久的過程,假如一昧靠資質,就會成爲傷仲永的故事,編碼自己就是一個長期學習的過程,程序員自己就是一個很耗神的工做,因此咱們要學會本身去寫一些代碼,用本身的方法,或者真正去理解代碼的邏輯。
積極主動敲代碼作到沒?教材實踐上有什麼經驗教訓?
- 這學期我以爲我很明顯的一個改變,一旦老師佈置一個實踐任務,再也不像是過去同樣,發現一無所知就去看別人的博客,本身的自我思考過程是一個很是幸福的時刻,當一我的去體驗思考的過程的時候是幸福的。
- 很幸運本身在這學期能夠用本身所學去完成一些項目或者大做業,也獲得了一些確定。
課堂項目實踐
- 時間複雜度分析
:時間複雜度分析,用大O記法寫出時間複雜度。
- ArrayStack的實現和測試:完成課本中ArrayStack類的實現,特別是完成peek、isEmpty、size和toString方法的實現,並完成四個方法的測試。
- 鏈表插入:寫出鏈表中節點插入的操做代碼。
- 鏈表實踐:鏈表練習,要求實現下列功能:
(1)經過鍵盤輸入一些整數,創建一個鏈表
(2)實現節點插入、刪除、輸出操做
(3)使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
- 第四章代碼檢查:運行PP28,PP28頁的程序,根據我的學號輸入後綴表達式並計算。
- LinkedStack補全:給出size、isEmpty和toString等方法的定義,以完成LinkedStack
類的實現。
- 第五章代碼檢查-凱撒密碼:代碼檢查P72-P73,凱撒密碼程序。
- 楊輝三角:使用循環隊列輸出楊輝三角。
- 棧隊列測試
- 第六章代碼檢查:運行PP6.8和PP6.11的程序
- 線性表實踐:定義一個商品類Product,須要包括商品名稱、價格等信息,使用鏈式存儲結構實現一個線性表,存儲商店中的商品。
支持插入、刪除、選擇排序、查找等功能,並進行簡單測試。
- ASL測試:已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92},若是使用折半查找法,ASL是多少?
- 三種查找算法練習
- 哈希衝突處理實踐:把本身的學號加21,例如學號爲1,把22添加到序列後面,使用鏈地址法,解決衝突。
編程實現,並測試。
- 希爾排序測試
- 樹計算題:計算題:
1.有1023個結點的徹底二叉樹,其高度是多少?葉結點數是多少?
2.高度爲h的徹底二叉樹至少有多少個結點?至多有多少個結點?
- 樹的深度和葉子個數計算:計算課本中背部疼痛診斷器中決策樹的葉子節點個數?根據課堂介紹的遞歸樹深度計算算法,計算決策樹的深度。
- 中序和先序計算二叉樹結構:若已知中序和先序序列,計算二叉樹結構
- 層次遍歷法實踐:(1)使用遞歸實現層次遍歷背部疼痛決策樹,並按照層次順序輸出每一個節點內容。
(2)非遞歸的層次遍歷法算法以下:
根結點入隊;
從隊頭取元素, 並執行以下3個動做:
(1)訪問該結點;
(2)若是該元素有左孩子,則左孩子入隊;
(3)若是該元素有右孩子,則右孩子入隊;
重複執行上述過程,直至隊列爲空。 此時,二叉樹遍歷結束。
按照上述算法,編程實現層序遍歷,按照層序的方法,遍歷並依次輸出每一個節點內容。
- 堆構造與排序:根據關鍵字序列:36,30,18,40,32,45,22,50,構造一顆小頂堆,並排序?
- 堆排序測試:根據關鍵字序列:36,30,18,40,32,45,22,50,利用數組構造一顆大頂堆,並排序。
- 十字鏈表練習:畫出十一鏈表結構。
- 最小生成樹:1.畫出Prim算法的最小生成樹的生成過程
2.畫出Kruscal算法的最小生成樹的生成過程
3.計算最小權值
- Dijkstra(迪傑斯特拉)算法測試:使用Dijkstra(迪傑斯特拉)算法計算單源(V1出發)最短路徑。
- AOE練習:一、求關鍵路徑,v1和ve的值並寫出具體步驟
二、畫出圖一可能的拓撲序列
三、畫出圖二所示無向圖的鄰接矩陣、鄰接鏈表,並列出深度優先和廣度優先遍歷圖所得的頂點序列。
四、寫出圖三的鄰接矩陣,並用prim算法求最小生成樹,畫出產生過程
哈夫曼編碼測試:設有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
給定一個包含26個英文字母的文件,統計每一個字符出現的機率,根據計算的機率構造一顆哈夫曼樹。
並完成對英文文件的編碼和解碼。程序員
- 課堂實踐對提升應用能力有幫助嗎?
- 相比於寫博客,我更喜歡課堂實踐,由於它不只僅可讓咱們對於知識的理解變得更加深入,還可讓咱們對於知識點的理解更加清晰,由於讓一個知識點變得熟練的過程就是實踐和聯繫的過程。同時還能夠學習到新的東西,增強本身的自我動手能力。
- 課堂實踐上本身有什麼經驗教訓?
- 一是,必定在課堂上要跟上老師的思路,同時本身必定要理清邏輯,程序設計自己就是一個考驗邏輯的學科,若是在課上連原理聽的都以爲很暈,編程就更加困難了;二是,在不知道本身到底會不會的時候必定要先進行自個人思考,不然直接看別人的代碼或者直接去查資料會讓本身覺得本身會了,其實什麼都不懂。
- 課堂實踐上對老師有什麼教學建議?
- 與上學期的建議相同,我建議老師能夠分層次佈置做業,按能力分配課堂上所要完成的任務,避免成績好的人早早作完沒事幹,學習差的人又久久不能作出來,帶最後又發生抄襲代碼甚至抄襲截圖的狀況。二是,我認爲能夠將博客做業的比重降下來,或者基於實踐做業的難度再佈置博客做業,由於不少人在兩個事情的時間分配存在很大的問題,所以假如沒有能力的人確定會先寫博客,可是博客又不知道寫什麼就開始胡編,因此沒有什麼意義!!!!!!!!!!!!!!!!!!!!!!!!我但願能夠被看到!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
課程收穫與不足
本身的收穫
- 新的一學期,本身補充了上學期沒有搞明白的一些知識點,也學到了不少新的知識,其實我以爲這一學期發現,分數是小事,最重要的是本身能夠學到東西,讓本身忙起來,我相信一句話飽足思淫慾,因此要讓本身的慾望慢慢降下來,安心下來,作一些值得的事情,和要好的朋友多玩玩,看到吸引本身的知識就安心學一學,讓本身的生活變得簡單一點,讓本身變得不簡單一些。
本身須要改進的地方
- 不足,我以爲就是本身很容易浮躁,情緒很不穩定,由於這學期事情不少,在事情很是多的時候,時間很難按照本身所計劃的進行,就所謂計劃趕不上變化,可是每當這個時候我本身就很以爲對不起本身,就辜負本身了,因此本身的情緒就會很容易失控。
結隊學習是否是真正貫徹了?
- 這個學期的結隊學期相比趕上學期提升很多,你們的關係更加熟悉,而後你們的能力也彼此心知肚明,因此在團隊分工上面很是明細,有問題及時討論,效率也都提升很多,在這學期也學到不少團隊工做的核心。
問卷調查
- 你平均每週投入到本課程有效學習時間有多少?
- 每週平均天天可能由5個小時,一週差很少保持在25-30個小時左右的時間進行學習。
- 每週的學習效率有提升嗎?你是怎麼衡量的?
- 學習效率是不相同的,由於到了大二,時間的分配須要偏重,但沒有所有投入,時間對於這學期的我是很是珍貴的資源,因此我很是珍惜,如何去衡量在這學期的學習效率,經過我隨身背書包帶電腦的時間就能夠知道,個人電腦幾乎是不離身的,因此不只僅是學習,還有工做。
- 藍墨雲班課的使用對你的學習有促進嗎?有什麼建議和意見嗎?
- 藍墨雲在這學期沒有發揮出他應當發揮出的能力,咱們不可以及時知道本身在課堂實踐獲得的分數,再是假如給予咱們扣分也沒有表面咱們到底出現錯誤在哪裏,因此我以爲存在很大問題!!!!!!!!!!!!!!!!!!!!!!!
- 你以爲這門課老師應該繼續作哪一件事情?
- 你以爲這門課老師應該中止作哪一件事情?
- 繁瑣複雜的博客,並非取消,但可讓學生了解到寫博客是爲了本身學習過程的記錄而不應成爲評比的對象,致使咱們這學期在博客總結上你們對於知識點的總結越寫越多。
- 你以爲這門課老師應該開始作什麼新的事情?
- 假如在課堂有空餘時間,我建議可讓學生在斷網的狀況下,進行自我編碼,測試水平。
任意發揮
- 計算機知識的學習還有不少,我但願本身能夠安下心來,學習更多知識,讓本身之後可以在社會中有一技之長。
總結中涉及到的連接的二維碼
課程總結
第一週
第二週
第三週
第四周
第五週
第六週
第七週
第八週
第九周
實驗報告
結對編程練習
第一週博客
第二週博客
衝刺博客一
衝刺博客二
衝刺博客三
衝刺博客四
衝刺博客五
衝刺博客六
衝刺博客七