20172305 2017-2018-2《程序設計與數據結構》課程總結

20172305 2017-2018-2《程序設計與數據結構》課程總結

每週做業連接彙總

  • 第一週做業軟件質量與算法分析
  • 第二週做業集合概念、棧及實現棧的方式(數組和鏈表)
  • 第三週做業隊列及實現隊列的方式(數組和鏈表)、定長和環形數組
  • 第四周做業列表(有序表、無序表和索引表)及實現列表的方式(數組和鏈表)
  • 第五週做業排序(選擇排序、插入排序、冒泡排序、快速排序、歸併排序)與查找(線性查找和二叉查找)
  • 第六週做業樹及樹的遍歷方式和實現樹的策略
  • 第七週做業二叉查找樹、AVL樹和紅黑樹
  • 第八週做業優先隊列與堆,以及實現堆的方式(數組和鏈表)
  • 第九周做業圖(無向圖、有向圖和網絡)以及實現的方式(鄰接列表和鄰接矩陣),圖的相關算法

寫得最好一篇博客

  • 第四周做業php

  • 緣由:該周學習的是有關列表的相關知識,我覺的本週寫的比較好的是代碼部分的總結,將列表的共有方法以數組和鏈表兩種形式進行分析的。還對本週的編程任務進行較爲詳細的編寫。可是,該周也有不足的地方就是在結對互評的地方,對結對夥伴的評價較少。html

閱讀量最高的一篇博客

  • 第五週做業node

  • 緣由:我以爲多是本身發佈的比較早,其次我以爲是本身的教材總結問題是大部分同窗的會存在的,並且我在查找較多博客以後總結的也比較詳細。git


報告連接彙總


代碼託管連接

  • 平常代碼
  • 項目代碼編程

  • 給出statistic.sh的運行結果,說明本學期的代碼量目標達到沒有?
    • 達到本學期的代碼量,並超額完成。
  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
    • 已經編寫過一個學期的代碼了,記得上次說過指尖上的勞做。我覺的這個學習的算是往上個學期的鋪的磚,逐漸逐漸的堆砌城牆的過程。就像一句話「實踐是檢驗真理的惟一標準」,代碼變得變得怎麼樣?代碼規範標不標準?程序效率高不高等問題都是要在嘗試的過程當中纔會知道的。
  • 積極主動敲代碼作到沒?教材實踐上有什麼經驗教訓?
    • 真的是認真認真的敲了,至於本學期的書就不作過多評價了。給的示例代碼用到的編寫類沒有顯示、書上知識點講解與主流發展有相違背的地方、還有書上錯誤的地方都有不少。因此,盡信書不如無書,走了不少的彎路,屢次的嘗試才完成相關內容和有關知識的學習。還在,這樣到仍是讓本身印象深入一些。

課堂項目實踐

  • 實踐一:時間複雜度分析數組

    (1)for(i=1;i<=n;i++) 
          for(j=1;j<=i;j++) 
           for(k=1;k<=j;k++)  
    (2)void fun(int n) {
      int i=l;
      while(i<=n)
         i=i*10;
    }
    (3)int i, j,sum;
      i=0;
      j=0;
      sum = i+j;
    
    (4)void fun (int n){
      int i=0;
      while(i*i*i<=n)
         i++;
    }
  • 實踐二:完成課本中ArrayStack類的實現,特別是完成peek、isEmpty、size和toString方法的實現,並完成四個方法的測試。網絡

    public T peek() throws EmptyCollectionException
     {
    
     }
     public boolean isEmpty()
     {
         // To be completed as a Programming Project
     }
    
     public int size()
     {
         // To be completed as a Programming Project
     }
    
     public String toString()
     {
         // To be completed as a Programming Project
     }
  • 實踐三:寫出鏈表中節點插入的操做代碼(僞代碼)

    public static void InsertNode(Student2 Head, Student2 node){
    
     }
  • 實踐四:鏈表練習,要求實現下列功能
    • (1)經過鍵盤輸入一些整數,創建一個鏈表
    • (2)實現節點插入、刪除、輸出操做
    • (3)使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
  • 實踐五:運行PP28,PP28頁的程序
    • 根據我的學號輸入後綴表達式並計算。(例如,學號172301,輸入1 7 + 2 3 0 1 - + *)
  • 實踐六:給出size、isEmpty和toString等方法的定義,以完成LinkedStack 類的實現。
    • 1.可以運行
    • 2.須要測試各個方法
    • 3.把代碼上傳到碼雲,並將關鍵代碼和運行結果截圖加水印(學號)上傳。
  • 實踐七:代碼檢查P72-P73
    • 凱撒密碼程序。
    • 把結果截圖,加學號水印,上傳到藍墨雲。
  • 實踐八:使用循環隊列輸出楊輝三角
    • (1)用數組實現循環隊列(要考慮擴容問題,不然不加分)
    • (2)輸出楊輝三角
    • (3)代碼運行結果添加學號水印,並上傳;代碼傳到碼雲,附上碼雲連接。
  • 實踐九:棧隊列測試題

  • 實踐十:運行PP6.8和PP6.11的程序,

  • 實踐十一:定義一個商品類Product,須要包括商品名稱、價格等信息,使用鏈式存儲結構實現一個線性表,存儲商店中的商品。支持插入、刪除、選擇排序、查找等功能,並進行簡單測試。須要使用的知識點:
    • 1.泛型
    • 2.實現Comparable接口中的方法
    • 3.鏈式存儲結構
  • 實踐十二:已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92} 若是使用折半查找法,ASL是多少?

  • 實踐十三:畫出存儲形式和asl的計算

  • 實踐十四:把本身的學號加21,例如學號爲1,把22添加到序列後面,使用鏈地址法,解決衝突。編程實現,並測試。
    • 要求計算asl,輸出衝突次數。
  • 實踐十五:當D2等於2時,第2趟排序結果是?

  • 實踐十六:計算題
    • 1.有1023個結點的徹底二叉樹,其高度是多少?葉結點數是多少?
    • 2.高度爲h的徹底二叉樹至少有多少個結點?至多有多少個結點?
    • 3.已知一棵度爲m的樹中有n1個度爲1的結點,n2個度爲2的結點,…,nm個度爲m的結點,問該樹中有多少個葉結點?
  • 實踐十七:參考下面葉子節點計算的僞代碼,計算課本中背部疼痛診斷器中決策樹的葉子節點個數?

    int CountLeaf ( BiTree T,  int &count )
     {     if ( T ) 
        {     if (  (!T->lchild) && (!T->rchild)  )
               count++;     // 對葉子結點計數
               CountLeaf( T->lchild, count);  
               CountLeaf( T->rchild, count); 
        }
     }
  • 實踐十八:若已知中序和先序序列,計算二叉樹結構
    • 例:已知一棵二叉樹的先序序列和中序序列分別爲ABDGHCEFI 和 GDHBAECIF,試肯定二叉樹結構。
    • 根據課堂介紹的遞歸樹深度計算算法,計算決策樹的深度。
  • 實踐十九:使用遞歸實現層次遍歷背部疼痛決策樹,並按照層次順序輸出每一個節點內容。
    • 非遞歸的層次遍歷法算法以下:
    • 根結點入隊;從隊頭取元素,並執行以下3個動做:
    • (1)訪問該結點;
    • (2)若是該元素有左孩子,則左孩子入隊;
    • (3)若是該元素有右孩子,則右孩子入隊;
    • 重複執行上述過程,直至隊列爲空。此時,二叉樹遍歷結束。按照上述算法,編程實現層序遍歷,按照層序的方法,遍歷並依次輸出每一個節點內容。(3分)
  • 實踐二十:根據關鍵字序列:36,30,18,40,32,45,22,50,構造一顆小頂堆,並排序?畫出構造堆過程(樹+數組)

  • 實踐二十一:根據關鍵字序列:36,30,18,40,32,45,22,50,利用數組構造一顆大頂堆,並排序。
    要求:
    • (1)輸出構造好的大頂堆序列(層序)
    • (2)輸出每輪排序的結果(數組的結果)
    • 把結果截圖並加學號水印上傳到藍墨雲,代碼上傳到碼雲。
  • 實踐二十二:使用Dijkstra(迪傑斯特拉)算法計算單源(V1出發)最短路徑。
    • (1)寫出V1到各個頂點的最短路徑
    • (2)要求寫出最短路徑計算過程(相似於圖2)
  • 實踐二十三: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個英文字母的文件,統計每一個字符出現的機率,根據計算的機率構造一顆哈夫曼樹。並完成對英文文件的編碼和解碼。
    • 要求:
    • (1)準備一個包含26個英文字母的英文文件(能夠不包含標點符號等),統計各個字符的機率
    • (2)構造哈夫曼樹
    • (3)對英文文件進行編碼,輸出一個編碼後的文件
    • (4)對編碼文件進行解碼,輸出一個解碼後的文件
    • (5)撰寫博客記錄實驗的設計和實現過程,並將源代碼傳到碼雲
  • 課堂實踐對提升應用能力有幫助嗎?
    • 我以爲課堂實踐能夠提升部分同窗的能力,接受能力比較慢的同窗須要溫習一下才能熟練運用。我以爲能夠課堂實踐與課後實踐相結合,或是課堂實踐採用難度比較適合大多人的程度會比較好。
  • 課堂實踐上本身有什麼經驗教訓?
    • 像算法之類的計算問題或是簡單的編程問題都是很簡單就解決的,可是比較困難的編程問題就很難了,須要細細的思考或要考慮清楚,這樣的話就有可能完不成課堂實踐的相關內容。爲了可以遇上別的同窗,須要更屢次的嘗試和提早的學習來彌補不足。
  • 課堂實踐上對老師有什麼教學建議?
    • 沒有什麼意見,比對兩個學期的課堂實踐,本學期的明顯增多,並且也開設了許多的額外實踐,爲你們提供了不一樣的實踐課程,很好的。

課程收穫與不足

  • 本身的收穫(投入,效率,效果等)
    • 這學期的課程過得很快,沒什麼感受就到期末了,對於《程序設計與數據結構》這門課程,這學期的學習和上學期的有很大不一樣,上學期感受學習的是基礎,而這學期更側重的是算法內容,邏輯性很強,無疑增長了編碼的難度。因此,感受這學期的更費力了,此外,有幸跟學長進行實驗操做,所以談及收穫其實仍是蠻多的,課內的課外的,感觸頗深的是大數據的處理上,平時的小打小鬧,感受用這個用那個的均可以達到最終結果,可是一旦和大數據接觸上就會發現有些真的是很慢很慢的。至於本學期的效率問題,感受就是由高到低再到高的過程,中間學習的時候處於低谷是由於有些編程真的是作到自閉的感受,後來面對團隊項目的時候我發現自閉也解決不了問題了...只能硬着頭皮幹代碼!至於效果的問題,在平常學習中學習了不少的算法和存儲結構,在團隊項目中學習了不少有管動畫的內容,此外遊戲碰撞、數據庫、PS都嘗試了一番。
  • 本身須要改進的地方
    • 至於改進的地方就是,對於本身軟肋的部分知識不想觸碰的要去嘗試,遞歸的編寫就要一直是本身的不足,搞來搞去的就不知道哪是哪了。並且,在之後的課程上,咱們沒有直接學習的機會,更是要時不時的來個代碼編寫編寫。
  • 結對學習是否是真正貫徹了?寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
    • 本學期和兩位同窗的合做很愉快,同時也學到了不少。並且,到了最後的編程項目的時候咱們團隊也加進了新的同窗,在合做的過程當中咱們遇到困難的時候有人開句玩笑也就沒有那麼累了,遇到成功的時候咱們也能夠一塊兒將這份快樂放大。我以爲能夠屢次嘗試這種團隊的問題,能夠增加咱們的相關知識和與同窗的融洽。

問卷調查

  • 你平均每週投入到本課程有效學習時間有多少?
    • 幾乎是天天都或多或少的學習着,視當時任務量的多少來定。
  • 每週的學習效率有提升嗎?你是怎麼衡量的?
    • 時高時低,有些時候其餘課程的任務比較多就會效率高些,由於沒有時間在Java上浪費。我以爲衡量標準就要看我的的能力和工做時間吧,有的同窗能力比較強就能夠在很短的實踐內編寫了,有的同窗就須要較長的實踐來編寫任務了。
  • 藍墨雲班課的使用對你的學習有促進嗎?有什麼建議和意見嗎?
    • 有必定的促進做用,可是有些周視頻量太大,徹底沒時間看。可是這學期老師讓咱們同窗進行知識視頻的錄製,以爲這個部分的內容很不錯。
  • 你以爲這門課老師應該繼續作哪一件事情?
    • 博客(能夠回顧本身一週的學習內容)、課堂實踐(強制性促進本身消化新知識)、編程項目多一點(增長綜合實踐能力)
  • 你以爲這門課老師應該中止作哪一件事情?
    • 我的感受沒有什麼事情是應該中止的。
  • 你以爲這門課老師應該開始作什麼新的事情?
    • 一個小建議就是能夠增長不一樣的編程項目,擴展同窗們的視野和不一樣領域的相關知識。

二維碼

  • 總結中涉及到的連接的二維碼
  • 學習博客

    • 第一週做業:
    • 第二週做業:
    • 第三週做業:
    • 第四周做業:
    • 第五週做業:
    • 第六週做業:
    • 第七週做業:
    • 第八週做業:
    • 第九周做業:

  • 實驗博客
    • 實驗一:
    • 實驗二:
    • 實驗三:

  • 項目博客
    • 第一週博客:
    • 第二週博客:

    • 衝刺階段-Day 1:
    • 衝刺階段-Day 2:
    • 衝刺階段-Day 2:
    • 衝刺階段-Day 3:
    • 衝刺階段-Day 4:
    • 衝刺階段-Day 5:
    • 衝刺階段-Day 6:
    • 衝刺階段-Day 7:

  • 其餘博客
    • 課堂實踐補寫博客
    • 哈夫曼編碼博客
    • 暑假做業博客
相關文章
相關標籤/搜索