📔
饥人谷前端体系课程笔记
黑马程序员笔记前端面试押题前端精进
  • 课程大纲
  • Git入门
    • 3. 软件安装详解
    • 4. Mac环境搭建
    • 5. 命令行入门
    • 6. 本地仓库
    • 7. Git远程仓库-GitHub
  • HTML全解
    • 8. HTML概览
    • 9. HTML标签
    • 10. HTML重难点
    • 11. HTML实践 & 手机调试
  • CSS全解
    • 12. CSS基础
    • 13. CSS布局(上)
    • 14. CSS布局(下)
    • 15. CSS定位
    • 16. CSS动画
  • HTTP全解
    • 17. URL 是什么
    • 18. 请求和响应 & Node.js Server
  • JS全解
    • 19. JavaScript概览
    • 20. 内存图与JS世界(精品课)
    • 21. Canvas 实践—画图板
    • 22. JS语法
    • 23. JS数据类型
    • 24. JS 对象
    • 25. JS 对象分类
    • 26. JS 数组
    • 27. JS 函数
    • 28. JS 实战,会动的代码
    • 29. JS运算符
    • 30. JS总结
  • JS编程接口
    • 31. DOM编程
    • 32. 手写DOM库
    • 33. JQuery中的设计模式(上)
    • 34. JQuery中的设计模式(下)
    • 35. DOM事件与事件委托
  • 项目 前端导航站点
    • 前端导航项目笔记
  • 前后分离
    • 40. AJAX的原理
    • 41. 异步与Promise
    • 42. 跨域、CORS、JSONP
    • 43. 静态服务器
    • 44. AJAX实战:Cookie、Session
  • JS进阶MVC
    • 48. MVC(上)
    • 49. MVC(中)
    • 50. MVC(下)
  • 项目构建
    • 51. Webpack(上)
    • 52. Webpack(下)
  • 算法与数据结构
    • 62. 伪代码与流程图
  • React全解
    • 75. React起手式
    • 76. React类组件和函数组件
    • 77. Class组件详解
    • 78. 函数组件
    • 79. Hooks原理解析
    • 80. Hooks各个击破
    • 81. 精通Redux
  • Node.js
    • 84. Node.js技术架构
    • 85. 文件模块
    • 86. 单元测试之文件模块
    • 87. 调试 Node.js 程序
    • 88. 静态服务器
    • 89. 命令行翻译工具
    • 90. 操作数据库
    • 91. 数据库基础知识
    • 92. Stream 流
    • 93. child_process
    • 94. 总结
  • TypeScript
    • 112. 基础
    • 113. 泛型
  • Next.js全解
    • Next.js 上
    • Next.js 下
  • ES6精讲
    • Promise,async/await
  • 大屏可视化笔记
    • 大屏可视化项目
  • SCSS全解
    • SCSS全解
  • 拓展
    • 一次性弄懂性能优化
    • Web性能优化
由 GitBook 提供支持
在本页
  • 越高级的程序员的抽象能力越强
  • 流程图
  • 三种语句搞定所有逻辑
  • 顺序执行语句
  • 条件判断语句
  • 循环语句
  • 流程图,伪代码的好处
  • 锻炼你的大脑
  • 整理你的思路
  • 流程图的应用
  • 数据结构
  • 如何表示两个数据
  • 如果顺序有意义
  • 如果顺序无意义
  • 如何表示N个数据
  • 如果顺序有意义
  • 如果顺序没有意义
  • 如何表示N对N数据
  • 比如学号
  • 数据结构的作用
  • 提前记住一些结构
  • 锻炼你的抽象能力

这有帮助吗?

  1. 算法与数据结构

62. 伪代码与流程图

62 算法与数据结构 伪代码与流程图

越高级的程序员的抽象能力越强

function t(fn, delay){
 let fn2 = ()=>{
  if(fn2.timer){return}
  fn()
  fn2.timer = setTimeout(()=>{
  	fn2.timer = null
  },delay)
 }
 return fn2
}

let f = t(()=>{console.log('火球术')},5000) 

流程图

如何用代码表示逻辑

输出N个数中最大的一个数

找到第1,2个数字中较大的那一个,存入max

找到max和第3个数字中较大的那个,存入max

找到max和第。。。个,存入max

max就是最大的数

a = [12, 32, 9, 1, 23, 6]
max = a[0]
for i from 1 to a.length() - 1
 if a.get(i) > max then max = a.get(i)
print max

三种语句搞定所有逻辑

所有的复杂算法都能用这三种语句描述(结构化编程理论)

顺序执行语句

语句1

语句2

条件判断语句

if ... then ... else ...
if ... else if ... else

循环语句

while ... do ...
for i from 1 to n

推荐使用Mindjet画流程图, 也可以用XMind,百度脑图等工具代替

方形表示语句,菱形表示条件判断,圆方形表示结束

流程图,伪代码的好处

锻炼你的大脑

你必须自己画出来

不能运行在计算机里

整理你的思路

思路乱,则图乱

伪代码都写不好,则代码更写不好

流程图的应用

用流程图找到最大数(两个数,N个数)

总结

  • 逻辑很重要

  • 用三种语句表达逻辑

  • 用图和伪代码表示三种语句

数据结构

就是数据与数据之间的关系和结构

如何表示两个数据

如果顺序有意义

  • [x,y]表示第一个是x,第二个是y

  • [y,x]表示第一个是y,第二个是x

  • 比如坐标就是这样的数据

  • 要提供first和last操作

如果顺序无意义

(x,y)和(y,x)一样

比如血压值(120,80)和(80,120)没区别

不需要提供first和last操作

如何表示N个数据

如果顺序有意义

数组表示[a1,a2,...aN]

要提供索引操作get(i)

要提供add/indexOf/delete操作

如果顺序没有意义

集合表示{a1,a2,...aN}

今天所有的代码都跟JS无关

要提供add/delete/has操作

如何表示N对N数据

比如学号

用哈希表表示

hash = {1001 =>'小方',1002=>'小红'}

数据结构 = 数据形式 + 操作(不同形式的数据暴露不同的操作)

数据结构的作用

提前记住一些结构

这些结构很常见,能让你很快理清思路,并且面试经常问

锻炼你的抽象能力

  • 一种数据结构往往能解决很多类似的问题

  • 如果你选错了数据结构,你根本就想不出思路

  • 牛逼的程序员更重视数据结构,而不是算法

上一页算法与数据结构下一页React全解

最后更新于3年前

这有帮助吗?