20172318 2018-2019-1 《程序設計與數據結構》第8周學習總結

20172318 2018-2019-1 《程序設計與數據結構》第8周學習總結

教材學習內容總結

優先隊列與堆

  • heap: 一種徹底二叉樹,能夠是最小堆,也能夠是最大堆。
    • 堆是一棵徹底二叉樹,其中的每一結點都小於或等於它的兩個孩子。
    • minheap:最小堆 具備兩個附加屬性的二叉樹:它是徹底樹,並且,對於每一個結點,它小於或等於它的左孩子和右孩子。
    • 最小堆將其最小元素存儲在該二叉樹的根處,且其根的兩個孩子一樣也是最小堆。
    • maxheap:最大堆 具備兩個附加屬性的二叉樹:它是徹底樹,並且,對於每一個結點,它大於或等於它的左孩了和右孩子。
  • completebinarytree:徹底二叉樹 一種平衡二叉樹,在h層(樹的最底層)的全部葉結點都位於樹的左邊。
  • prioritytree:優先樹 一種集合,遵循兩個排序規則:具備更高優先級的項在前,若是具備相同優先級,則按照先進先出原則排序。
  • addEIement操做
    • addElement方法將給定的Comparable元素添加到堆中的恰當位置處,且維持該堆的徹底性屬性和有序屬性。
    • 由於一個堆就是一棵徹底樹,因此對於插入的新結點而言,只存在一個正確的位置,且它要麼是h層左邊的下一個空位置,要麼是h+l層左邊的第1個位置(若是h層是滿的話)。
    • 一般,在堆實現中,咱們會對樹中的最末一個結點,或史爲準確是,最末一片葉子進行跟蹤記錄。
  • removeMin操做
    • 要維持該樹的徹底性,那麼只有一個能替換根的合法元素,且它是存儲在樹中最末一片葉子上的元素。
  • 使用堆:優先級隊列
    • 雖然最小堆根本就不是一個隊列,可是它卻提供了一個高效的優先級隊列實現。
  • 用鏈表實現堆
    • 由於咱們要求在插入元素後可以向上遍歷該樹,因此堆中結點必須存儲指向其雙親的指針。
  • 用數組實現堆
    • 在二叉樹的數組實現中,樹的根位於位置0處,對於每一結點n,n的左孩子將位於數組的2n+1位置處,n的右孩子將位於數組的2(n十1)位置處。
    • 鏈表實現和數組實現的addElement操做的時間複雜度同爲O(logn)。
    • 鏈表實現和數組實現的removeMin操做的複雜度同爲O(logn)。
  • 使用堆:堆排序
    • heapSort方法的兩部分構成:添加列表的每一個元素,而後一次刪除一個元素。
    • 堆排序的複雜度爲O(nlogn)。

教材學習中的問題和解決過程

  • 問題1:.優先級隊列和隊列有什麼區別?html

  • 問題1解決方案:
    隊列就像平時買東西排隊同樣,從一個隊伍的後面進入這個隊伍,而後排隊,直到走到隊伍最前面(隊首)才能出去。
      隊列就是採用FIFO(first in first out )原則模擬現實生活中這種排隊模型的一種數據結構。
      優先隊列是對隊列的進一步抽象,好比五我的排隊,其中有一個是老年人,那麼老年人就會自動被排到最前面。git

  • 問題2:.堆有什麼用
  • 問題2解決方案:
    Java把內存劃分紅兩種:一種是棧內存,另外一種是堆內存。在函數中定義的一些基本類型的變量和對象的引用變量都是在函數的棧內存中分配,當在一段代碼塊定義一個變量時,Java就在棧中爲這個變量分配內存空間,當超過變量的做用域後,Java 會自動釋
    放掉爲該變量分配的內存空間,該內存空間能夠當即被另做它用。
      堆內存用來存放由 new 建立的對象和數組,在堆中分配的內存,由 Java 虛擬機的自動垃圾回收器來管理。在堆中產生了一個數組或者對象以後,還能夠在棧中定義一個特殊的變量,讓棧中的這個變量的取值等於數組或對象在堆內存中的首地址,棧中的這個
    變量就成了數組或對象的引用變量,之後就能夠在程序中使用棧中的引用變量來訪問堆中的數組或者對象,引用變量就至關因而爲數組或者對象起的一個名稱。引用變量是普通的變量,定義時在棧中分配,引用變量在程序運行到其做用域以外後被釋放。而數
    組和對象自己在堆中分配,即便程序運行到使用 new 產生數組或者對象的語句所在的代碼塊以外,數組和對象自己佔據的內存不會被釋放,數組和對象在沒有引用變量指向它的時候,才變爲垃圾,不能在被使用,但仍然佔據內存空間不放,在隨後的一個不確
    定的時間被垃圾回收器收走(釋放掉)。數組

  這也是Java比較佔內存的緣由,實際上,棧中的變量指向堆內存中的變量,這就是 Java 中的指針!數據結構

代碼調試中的問題和解決過程

ide

上週考試錯題總結

The Java Collections API provides two implementations of balanced binary search trees, TreeSet and TreeMap, both of which use a ___________tree implementation.函數

A . AVL學習

B . red/black.net

C . binary search設計

D . None of the above
選B,他們都使用了紅黑樹3d

  • 錯題2

The best comparison sort in terms of order is:

A . O(1)

B . O(n)

C . O(log(n))

D . O(nlog(n))
選D,最複雜的是D,這題沒看懂

代碼託管

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172312
    • 課本內容總結有本身的理解,圖片較少
    • 結對學習內容
      • 課本第十二章

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 8/8
第二週 500/500 1/2 15/ 23
第三週 802/1302 1/3 12/35
第四周 1530/2832 2/5 15/50
第五週 1165/3997 1/6 10/60
第六週 1169/5166 1/7 15/75
第七週 843/6039 1/8 15/90
第八週 1804/7843 2/10 30/120

參考資料

相關文章
相關標籤/搜索