5-1 算法与数据结构(伪代码、流程图、逻辑、数据结构)

伪代码与流程图

1.编程语言也能抽象
JS、Python、Java、PHP根本没有区别

2.以上这些语言都有的东西

  • 声明
  • if…else…(条件判断)
  • while循环、for循环
  • 函数
  • 对象

3.这意味着

  • 没必要过分关注语言的细节
  • 首先理解这些语言的不变之处
  • 以不变应万变

4.有什么东西是不变的

  • 对编程的热爱
  • 逻辑和算法
  • 数据结构

二、逻辑

所有的变成,都在使用逻辑

1.逻辑是什么

1.1 三段论逻辑

  • 命题一:JS有7种数据类型:string、number、bool、symbol、undefined、null、object
  • 命题二:JS的函数不属于前六中类型
  • 如果命题一、二为真,那么可以得到
  • 推论:JS的函数属于object类型

2.如何用代码表示逻辑(写代码就是写逻辑)

  • 用if…else…可以表示逻辑
  • 用for循环可以表示逻辑

3.三种语句搞定所有逻辑
所有的逻辑只需要三种语句——结构化编程理论
(但结构化编程在某些情况下会变得麻烦,比如错误处理)

  • 顺序执行语句
    语句1
    语句2
  • 条件判断语句
    if...then...else...:如果满足条件,则…否则…
    if...else if...else...:嵌套
  • 循环语句
    while...do...
    for i from 1 to n...

注意:语法的细节永远是最无聊的,只是方法不同,只要能够表达某个抽象的意思即可

4.推荐使用Mindjet画流程图
(也可以用XMind、百度脑图等工具)

5.流程图、伪代码的好处
提高应对复杂问题的能力

  • 锻炼大脑
    必须自己画出来
    不能运行在计算机
  • 整理思路

6.流程图规则(可以额外再学习)

  • 每个方形只能有一个出口
  • 每个菱形必须要有两个出口

圆角矩形:开始和结束
菱形:判断,每一个菱形都有真和假两种情况

总结:

  • 逻辑很重要
  • 用三种语句表达逻辑
  • 用图和伪代码表示三种语句

三、数据结构

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

1.如何表示两个数据

1.1如果顺序有意义(有序的二元组)

  • [x,y]表示第一个是x,第二个是y
  • [y,x]表示第一个是y,第二个是x
  • 比如坐标就是这样的数据
  • 要提供first和last操作

1.2 如果顺序无意义(无序二元组)

  • (x,y)和(y,x)一样
  • 比如血压值(120,80)和(80,120)没区别
  • 不需要提供first和last操作

2.如何表示N个数据

2.1 如果顺序有意义

  • 数组表示[a1,a2,…a2N]
  • 要提供索引线索 get(i)
  • 要提供 add/ indexOf / delete 操作

2.2 如果顺序没有意义

  • 集合表示{a1,a2,…aN}
  • 今天所有代码都与JS无关
  • 要提供 add / delete / has操作

3.如何表示N对N数据(如:学号和名字对应)

  • 用 [哈希表] 表示
  • 哈希表有 key 对应 value
  • hash = {1001 =>'小方',1002=>'小红'}
  • 和JS对象的区别:JS对象的key只能是字符串,hash表的字符串可以是字符串、数字、布尔、对象等等,且hash表没有原型
  • JS的对象是对hash表的一种实现

4.数据结构 = 数据逻辑形式 + 操作
不同形式的数据暴露不同的操作

4.1 数据结构的作用

  • 提前记住一些结构
    这些结构很常见
    这些结构能让你很快理清思路
    这些结构面试经常问
  • 锻炼你的抽象能力
    一种数据结构往往能解决很多类似的问题
    如果你想错了数据结构,你根本想不出思路
    牛逼的程序员更重视数据结构,而不是算法

4.2 快速入门数据结构
8种排序算法

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个程序员,算法与数据结构是你必须掌握的基本知识之一。它们是解决问题和优化代码性能的关键工具。 算法是一系列定义良好的步骤,用于解决特定问题或执行特定任务。它们可以是数学公式、逻辑推理或一系列编程指令。算法有助于解决各种问题,例如查找、排序、图形处理等。 数据结构是组织和存储数据的方式。它们可以是简单的变量、数组、链表、栈、队列、树或图等。选择合适的数据结构可以显著提高算法的效率和性能。 入门算法与数据结构,你可以从以下几个方面开始学习: 1. 掌握基本的数据结构:了解数组、链表、栈和队列等基本数据结构的概念、特点及其操作。 2. 学习常见的算法:了解常见的排序算法(如冒泡排序、插入排序、快速排序)、查找算法(如线性查找、二分查找)以及递归算法等。 3. 理解复杂度分析:学习如何分析算法的时间复杂度和空间复杂度,了解如何评估算法的效率和性能。 4. 解决实际问题:通过练习和实践,尝试用算法与数据结构解决一些实际的编程问题,例如字符串处理、图形处理等。 除了自学,你可以参考一些经典的教材和在线教程来加深理解。一些推荐的资源包括《算法导论》、《数据结构算法分析》、LeetCode等在线平台。 记住,算法与数据结构是一个长期学习的过程,不仅需要理解概念,还需要实践和不断地思考如何应用它们解决实际问题。祝你在算法与数据结构的学习中取得好成果!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值