01 - 数据结构和算法的认识

2021-10-25  本文已影响0人  iOS之文一

数据结构和算法学习汇总

了解数据结构和算法的一些基本概念,主要掌握时间复杂度的计算

1、数据结构

1.1 定义

数据结构是指所有数据元素以及数据元素之间的关系,可以看做是相互之间存在着某种特定关系的数据元素的集合,即可以把数据结构看成是带结构的数据元素的集合

1.2 包括

  1. 数据元素之间的逻辑关系
    1. 即数据的逻辑结构
    2. 它是数据结构在用户面前呈现的形式
  2. 数据元素及其在计算机存储器中的存储方式
    1. 即数据的存储结构
    2. 也称为数据的物理结构
  3. 施加在数据上的操作(即数据的运算)

1.3 逻辑结构

1.3.1 介绍

数据的逻辑结构是从逻辑关系上描述数据的,常常将数据的逻辑结构简称为数据结构。

1.3.2 类型

集合:

树形结构:

图形结构:

1.3.3 注意

1.4 逻辑结构

1.4.1 介绍

逻辑结构在计算机中的存储方式。依赖于计算机语言

1.4.2 类型

顺序存储结构:

链式存储结构:

索引存储结构:

散列(哈希)存储结构:

1.5 数据类型

数据类型是一组性质相同的值的集合和定义在此集合上的一组操作的总称,数据类型是数据结构在计算机的具体体现。

注意:

2、算法

算法是对特定问题求解步骤的一种描述

特性: 有穷性、确定性、可行性、有输入、有输出

2.1 介绍

算法设计好后,还需要分析算法的优劣,从两方面考虑

2.2 算法设计的目标

2.3 时间复杂度

一个算法由控制结构和原操作构成,算法的运算时间取决于两者的综合效果,算法执行时间大致为基本运算时所需时间与运行次数的乘积。因此一个算法的执行效率可以由其最基本的运算的执行次数来衡量。

2.3.1 计算方式

计算公式: T(n)=O(f(n))

说明:

注意: O 的作用在于只求出T(n)的最高阶项,忽略低阶项和常数

2.3.2 常见时间复杂度

O(1)
没有进行循环的算法中,基本运算次数与问题规模无关,所以是常数

O(1).png

对数阶 O(log2n)
次数为x,而2的x次方等于n,那么就是对数阶

O(log2n).png

线性阶 O(n)
只有一层循环

O(n).png

平方阶 O(n^2)

O(n^2).png

立方阶 O(n^3)
三层循环,肯定就是n^3了

O(n^3).png

排序:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) <O(2^n) < O(n!) < O(n^n)

2.3.3 期望时间复杂度

也叫加权平均时间复杂度,将执行的概率也加入计算。

2.3.3 均摊时间复杂度

是一种特殊的加权平均时间复杂度,把耗时多的操作分摊到耗时低的操作。


均摊时间复杂度.png

这个时间复杂度 其实是O(1),而不是O(n)

2.4 空间复杂度

算法空间复杂度是指计算算法所需的存储空间, 其计算公式为S(n) = n(f(n))
所以在考察算法的空间复杂度,主要考虑算法执行所需要的临时占用的存储空间大小的量度。

数组逆序,将一维v1.43数组a中的n个数逆序存放在原数组中.

复杂度计算:

空间复杂度计算.png

说明:

上一篇下一篇

猜你喜欢

热点阅读