资料结构的重要性

在程序入门的讨论社团中有一种类型的年经文,像是:

  • 资料结构到底重不重要?
  • 不会资料结构可以写程序吗?

我想答案是: 就算你不会资料结构,你也写得出程序。不过,如果你注重程序的执行效率的话,资料结构绝对是必备的知识之一!

进入正题

开设资料结构的老师与第三天提到的 UCOMP 微算机实习的老师是同一人 (也就是我的恩师)。
这门课是采英文授课的,整个学期要教完所有基础的资料结构,所以课程算是相当紧凑。
那一学期老师一共上了:

  • Sorting problem
  • Asymptotic notations
  • Devide and Conquer
  • Recursion
  • Merge sort
  • 3 method for evaluating recurrences
  • Linked list
  • MultiList
  • Binary Tree
  • BST
  • RB Tree
  • AVL Tree
  • Hash Tables
  • Graph

题外话: 因为老师选用的课本是演算法圣经,所以简单的演算法都有提到,到我三下修了计算机演算法时,除了 Dynamic programming 是老师当时没有提到的以外,其他都被他给讲完了 XD

不过说到这边,没有资料结构基础的同学可能也还是不明白它的重要性,资料结构的概念就非常像是教你怎麽安排教室的桌椅,如果教室是:

  • 一排一排 (向补习班那样)

这样坐在中间位子的同学就非常不方便入座,但是可以容纳很多人。

  • 群组式排法

因为空间非常大,所以学生要回座位非常轻松,但是会浪费大量的空间,而且同学会聊天

  • 行列式排法

就像是一般国中小那样,空间使用率跟回座位的方便性都属於一般般,可以算是折衷的作法。

至於演算法,就有点像是座位分配的机制:

  • 关系不好的同学坐在一起
  • 按照身高排
  • 成绩好的先选
  • 按照座号排序

每个排法都有它的优缺点,这就是演算法的魅力所在。

刷题的重要性

不知道从什麽时候开始,科技公司非常喜欢在面试时考验工程师的解题能力。
如果要在最快时间内以最佳的办法处理掉题目的需求,资料结构与演算法几乎是必备的技能

但我本人其实非常讨厌刷题,因为我觉得为了刷题而写程序还蛮没意义的,所以我一直都对这块兴致缺缺。
是说交大资工所也会要求学生要在 CPE 中解出至少三题,所以为了毕业证书,我之後也得乖乖刷题了 XD


<<:  自动化测试,让你上班拥有一杯咖啡的时间 | Day 6 - 使用 Custom Commands

>>:  自动化 End-End 测试 Nightwatch.js 之踩雷笔记:选取文字

Day2 XAMPP 环境准备

学习PHP前的准备,就是开发环境与执行环境的部署,就像上学前要先准备铅笔、课本、背包,最重要的是一颗...

【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完)

【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完) 昨天我们用程序码...

Day5|【Git】动手建立、初始储存库(Repository)!

这里我们先看一张图,大概了解一下 Git 在发布专案时的流程。 先有个概念,之後会逐一详细解释。 开...

学习笔记:一起进入 PixiJS 的世界 (一)

PixiJS为2D WebGL渲染引擎,经常使用於互动与游戏相关专案中,具有快速、装置支援度高的优点...

Vue.js 从零开始:computed

此篇後面会有点难懂,可以去看我的范例,更了解实际运作喔,各位加油! computed 计算属性 co...