数据结构和算法
2020-12-26 本文已影响0人
李moumou
一、数据结构的概念
计算机存储数据的不同方式
常见的有数组(连续存储空间)、链表结构(不连续存储、但存储上一个节点和下个节点的的指针)
二、算法的概念
同一问题不同的解决方法
算法往往针对特定的数据结构的,不同数据结构直接影响算法效率
1、数组
- 插入一个数 (效率低)
数组连续空间不能直接插入,新建一个数组长度比现在大1,然后在指定位置依次填入数组,完成插入 - 查找一个数(效率高)
比如查找第三个数,直接访问数组角标即可
2、链表
- 插入一个数(效率高)
将插入位置的尾指针指向新数据头指针,将新数据的尾指针,指向下个数的头指针 - 查找数据(效率很低)
需要从表头开始遍历,逐个查找
三、算法的优劣
1. 时间复杂度 (O)
- 时间测算
(1) 计算算法时间差
(2) 幅度不够循环来凑(增加循环次数)
2. 空间复杂度:算法所占的空间随问题规模变化的规律
所需要的空间
3. 时间-问题(数据)规模:算法时间随问题规模变化规律(时间复杂度)
(1) 不考虑必须要做的操作(循环、赋值、程序初始化)
(2) 不考虑常数项
2n 只需要考虑n
(3) 不考虑低次项
n^2+n 只考虑n^2
举例:
1、访问数组某个位置的值 时间复杂度为恒定 O(1)
2、访问链表某个位置的值(一般情况时间复杂度考虑最差的情况)
O(n) 时间复杂度随问题规模线性变化
3、求数组平均值时间复杂度 O(n)