iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
Software Development

少女人妻在廚房裡想不通的演算法系列 第 5

【在廚房想30天的演算法】Day 05 資料結構之冰箱整理術

Aloha!又是我少女人妻 Uerica!昨晚跟朋友聊天突然發現,如果沒有最終目標或目標不夠明確,那過程中受的每一點日曬雨淋都猶如被鞭刑拷打一樣痛苦,可是如果能明白自己所受的每一點辛苦有其意義,那就有滿滿的動力堅持下去吧!甚至還會上癮呢~


資料結構

今天來談資料結構!恩!什麼是資料結構呢?阿先來跟大家分享一下我的冰箱收納小技巧吧 XD

什麼是資料結構以及如何消滅冰箱毛怪

以前剛開始學料理的時候,會特地買食譜上寫的所需食材,但每次料理完都會剩下很多食材,像蔥一買就是一把,總不能只買一兩根吧,雖然偶爾賣菜阿姨會送我XD。況且不是什麼食材都很常用到,總之最後冰箱就越吃越多剩餘食材,然後過年清掃冰箱時總會遇到很多奇蹟生物..冰箱毛怪!

UolApA5

後來經過經驗累積,可以自己隨意搭配食材來料理,也懂得哪些食材可以互相替換,學會了定期幫冰箱瘦身的技巧,但越來越常煮的時候,通常看到哪些青菜或肉類在特價,還是會忍不住囤貨一番,所以冰箱毛怪並沒有變少,還進化給我看!

YzHh8Wt

後來我發現,是我家冰箱太雜亂了,每次回家都一股腦往冰箱丟,然後家裡冰箱又大的跟什麼一樣,造成很多善良的食材漸漸被遺忘,心生怨恨成了冰箱毛怪!

DFeQfUv

直到有天我想通了,決定好好洗心革面一番,因我家冰箱冷藏區大約有六層,所以我將冰箱食材不挑種類以保存期限來排放,不易久放的在最上層,可以放比較久的在最下層,這樣的方式的確可以避免食材被遺忘最後過期,但買新食材的時候卻要花很多時間整理與調整,也是一件令人頭痛的事。

於是我後來又改良,改成食材先分類(肉類一層、蔬菜一層等),再將不易保存的放在最左側,這樣一來不但可以評估哪些食材快過期趕快料理,在買新食材的時候又能快速放入適當位置,而且能快速分辨哪些總類庫存快要沒有了!

Tu49hHM

好的~回歸到主題,像這種將所有資料因應使用情境,資料經過設計與邏輯去儲存就稱為 “結構化” 。如果你家冰箱很少增加食材,就適合第一種依照有效期限擺放的方式就可以了,而且在拿取食材也比較有效率。如果跟我一樣常買又常煮,那就需要考量在增加食材跟拿取食材都要方便合適的方式才行。而在日常生活中也可處處看到很多類似的範例,像圖書館的書籍擺放、便利商店的商品陳列等。

在電腦上寫程式時也會有很多資料需要先儲存再做處理的情況,所以工程師們會因應不同的使用情境、演算法的運算和如何運用變數等,多個面向的考量後選擇最適合的方式來結構化的儲存資料。

像這種探討如何將資料有組織地存放在記憶體中,以提升程式的執行效率,就稱為資料結構(Data Structure)。

常見的資料結構

此部分參考維基百科的說明,後面幾天會一一介紹其特性~

  • 連結串列(Linked List)
  • 陣列(Array)
  • 堆疊(Stack)
  • 佇列(Queue)
  • 樹狀結構(Tree)
  • 圖形結構(Graph)
  • 雜湊表(Hash table)
  • 堆積(Heap)

資料結構分類

一般資料儲存間的關係,可分為三種:

  • 線性關係:一前一後形成一直線的關係。
  • 階層關係:一個在上,多個在下的階層式關係。
  • 相鄰關係:一個或多個資料如網絡般相互連結的關係。

fdEyvIG

參考資料:

資料結構概念


耶今天就先到這邊啦~祝大家中秋節快樂!


上一篇
【在廚房想30天的演算法】Day 04 來淺談一下空間複雜度
下一篇
【在廚房想30天的演算法】Day 06 資料結構:連結串列 Linked List
系列文
少女人妻在廚房裡想不通的演算法30

尚未有邦友留言

立即登入留言