算法初识1

为什么学习数据结构与算法?

开发工程师就是把实际的问题转化成计算机指令——设计出数据结构,再加以算法。

  1. review
  2. 计算机世界的基本规则
  3. 各种框架的原理对于算法应用

学习思路及方法

    1. 对数据结构和算法有一个全方位的了解
    1. 分类练习——一段时间只练习固定分类的题目,比如只练习二叉树的,开始之前,对其具体定义、概念、应用及可能出现的恶类型进行梳理了解再开始。
    1. 对一个类型针对性练习后,定期回顾,发现规律,进行总结。

最终达到的效果就是: 当你看到一个题目,首先你要想到它属于哪种数据结构与算法,然后想到这是一个什么类型的问题,然后是此类问题的解决方法。

时间复杂度

对象的时间复杂度是 O(1)

时间复杂度:基本操作重复执行的次数(频度),反映了程序运行开始到结束的时间。
没有循环语句,记作 O(1),也称为常数阶。
只有一重循环,记作 O(n),频度与问题规模 n 呈线性增大关系。

1
2
3
4
5
6
7
8
// 常见的时间复杂度有:
O(1): Constant Complexity: Constant 常数复杂度
O(log n): Logarithmic Complexity: 对数复杂度
O(n): Linear Complexity: 线性时间复杂度
O(n^2): N square Complexity 平⽅方
O(n^3): N square Complexity ⽴立⽅方
O(2^n): Exponential Growth 指数
O(n!): Factorial 阶乘

空间复杂度

空间复杂度——运行完一个程序所需的内存大小。

数据结构

数据元素之间存在的一种和多种特定的关系集合。从逻辑结构、存储结构这两个维度来理解它。

    1. 逻辑结构
      数据之间的关系,可以分为两种:线性结构、非线性结构。
      • 线性结构: 一个有序数据元素的集合。数据元素之间的关系是一对一的,除了第一个和最后一个数据元素之外,其它数据元素都是首尾相连的。
        a. 常用的线性结构有:栈、队列、链表、线性表。
      • 非线性结构:各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或多个其他数据元素发生联系。
        a. 常见的非线性结构: 二维数组、树等。
    1. 存储结构
      逻辑结构用计算机语言的实现。
      常见的存储结构有:顺序存储、链式存储、索引存储以及散列存储。

      例如:
      a.数组在内存中的位置是连续的,它就属于顺序存储;
      b.链表是主动建立数据间的关联关系的,在内存中不一定连续,属于链式存储。
      c.还有顺序和逻辑上都不存在顺序关系,但是你可以通过一定的方式去访问它的哈希表,数据散列存储???

      感谢掘金大大的文章,让我在学习算法的道路上茅塞顿开! 前端如何准备数据结构与算法

    1. 数据结构——二叉树——每个节点最多有两个子树的树结构(左子树、又子树)
      树——用来模拟具有树状结构的数据集合。

    二叉树的五种基本形态

二叉树

前序遍历(根在前)

根、左、右

中序遍历(根在中)

左、根、右

后序遍历(根在后)

左、右、根

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2024 HL's Blog All Rights Reserved.

UV : | PV :