iT邦幫忙

2021 iThome 鐵人賽

DAY 1
0
自我挑戰組

【用 JS 學演算法】前端工程師學徒系列 第 1

【Day 01】認識資料結構 Data Structure ( 使用 JavaScript )

一、什麼是資料結構 ?

當我們撰寫程式時,會宣告變數來存放資料,這些資料會儲存在記憶體中,在我們需要時可以拿出來使用。
這邊我們可以思考兩點:

  • 要儲存的資料內容是什麼 ?
  • 資料的儲存方式 ( 結構 ) 是什麼 ?

例如:我今天有多個英文單字 ( 資料 ),我要使用 string 還是 array 儲存 ( 儲存方式 )

資料是一群元素所組成的有限集合;結構是這些元素間的組成關係

這樣儲存 / 組織資料的方式就稱為資料結構 ( data structure )。有時候也會使用資料型態 ( data type )、collection 來描述。

二、抽象的資料型態 ( Abstract Data Type, ADT )

當我們在討論資料結構時,討論的是一種抽象概念,而不是特定程式語言中的實作。

舉例來說,當我們在談資料結構 hash table 時,不管是使用 javascript 或 python,概念上都是根據同一個 ADT 概念,來說明該資料結構 hash table 的規格,以及應該具備的方法。

三、資料結構的目的是什麼 ?

資料存放在記憶體中時,需要先將資料定義成最有利的抽象資料型態 ( 符合一定的規格與方法 ),讓程式能夠有效率地從記憶體中存取這些資料。

資料結構的目的:讓你更有效率地把資料存到電腦裡或取用,這裡的「效率」指的是節省空間 ( 解決空間複雜度 )

四、常見的資料結構有哪些 ?

4-1. String

單引號或雙引號所括起來,有位置 ( 索引 ) 和字母

4-2. Array

  • 有順序性
  • 儲存在記憶體中的連續區域 ( 連續的記憶體空間 )
  • 可以快速使用 index 找出資料

4-3. Linked List

  • 資料儲存在不同的記憶體位置
  • 透過 pointer 的方法,依特定順序將多筆資料,排列成線性串列。

4-4. Stack

  • 有順序性
  • 單邊出入 ( 前端 )
  • 後進先出 ( Last in First out, LIFO )

4-5. Queue

  • 有順序性
  • 不同端出入
  • 先進先出 ( First in First out, FIFO )

4-6. Hash Table ( 雜湊表 )

  • 成對的資料:key-value pair
  • 透過 key 來找 value

原文連結:認識資料結構 Data Structure ( 使用 JavaScript ) - Ted's Point 泰德觀點


下一篇
【Day 02】認識演算法 Algorithm ( 使用 JavaScript )
系列文
【用 JS 學演算法】前端工程師學徒9

尚未有邦友留言

立即登入留言