1. 程式人生 > >2018/07/26 《輕松學算法》 學習筆記(一)

2018/07/26 《輕松學算法》 學習筆記(一)

小明 color hash 問題 處理 輕松 你是 都是 學習筆記

  第一章《數組、集合、散列表》

總結

1:數組

  - 什麽是數組?

    - 把有限個數據類型一樣元素按順序放在一起,用一個變量命名,通過編號可以訪問的一個有序集合。

  - 特點:

    - 想用就要提前想好。因為數組是 定長 的,多了浪費,少了尷尬。

    - 順序訪問,也就是說,雖然在使用中可以通過下標訪問,但是在計算機處理當中,也是按照順序訪問的。

  - 使用場景

    - 因為數組的不變性,所以在不變的業務中,更適合使用數組。

2:集合

  - 列表(有序集合[鏈表、隊列、棧 ......]、關聯數組......) 等等都是集合,概念比較寬泛......(了解)

  - 特點

    - 和它實現有關,那就是變長,變長是相對的,內部還是通過數組來實現。知識在數組不夠長時候的一種策略,把舊數組復制到新數組使用。

  

  - 使用場景

    - 會變得東西基本都會使用。

3:散列表

  - 什麽是散列表(HashTable)?

    - 可以通過給定的關鍵字直接訪問到具體對應值的一個數據結構。

      - 就類似一個班上一共500個同學,每次找小明巨麻煩,需要一個一個問你是不是小明,效果很差。

       為了可以快速定位,校長掐指一算(Hash計算),給小明(Value)定了一個學號(Key),並記在了一個小本子(散列表)上。

       這樣我們每次就可以快速找到對應的同學了。

  - 什麽是碰撞?

    - 通過不同的Key可以訪問到同一個Value。

      - 原因是 不同的 Key 在通過哈希函數計算時候,可能會得到同一個地址(Value)

  

  - 如何解決碰撞問題?(了解)

    - 開放地址法 (開放尋址法)

      - 在發現該 Key 已經有值之後,可以往後移動一個地址,在檢測,如果沒有使用。則就是用這個地址。

    - 在哈希法

      - 再次計算哈希,缺點是增加了計算的時間。

    - 鏈地址法

      - 學習鏈表之後學習

  - 散列的特點?

    - 訪問速度快。快速定位。

    - 空間換時間

,需要額外的空間。

    - 無序。

    - 可能產生碰撞。

  - 散列的使用場景

    - 由於散列的特性我們也知道,散列表適合快速查找等。

2018/07/26 《輕松學算法》 學習筆記(一)