数据结构和算法基本概念

数据结构概述

线性结构: 这是最常用的数据结构,特点是数据元素之间是一对一的线性关系。体现为数组、队列(先进先出)、链表(单、双、环形)、栈(先进后出)等。

         单链表 指向后一个节点、双链表指向前后两个节点;

         线性结构有两种不同的存储结构:顺序存储结构、链式存储结构

         顺序存储 连续的存储空间、 查找快,删除插入慢

         链式存储 不一定连续、删除插入块、查找慢

总结:数据量小的时候首选顺序存储结构,比如ArrayList,数据量大且插入、删除频繁时选用链式存储结构,比如LinkedList。

非线性结构: 数据元素之间不是一对一的线性关系。体现为二维数组、多维数组广义表、树结构、图结构等。

算法基础知识

算法:解决问题的方法和步骤

评价算法的好坏:渐近时间复杂度和渐近空间复杂度。

时间复杂度

时间频度---T(n)---基本语句执行的重复次数

时间复杂度--忽略常数项、忽略低次项、忽略系数

忽略常数项: n +20 忽略20 、

忽略低次项 :n*n + 2n 忽略2n

忽略系数 : 3n*n 和5 n*n 3和5忽略;

执行曲线分离 n*n*n 和6*n*n

算法的渐进时间复杂度 O(n) O(n*n)

渐近时间复杂度的大O标记:

 - 常量时间复杂度 - 布隆过滤器 / 哈希存储

 - 对数时间复杂度 - 折半查找(二分查找)

 - 线性时间复杂度 - 顺序查找 / 桶排序

 - 对数线性时间复杂度 - 高级排序算法(归并排序、快速排序)

 - 平方时间复杂度 - 简单排序算法(选择排序、插入排序、冒泡排序)

 - 立方时间复杂度 - Floyd算法 / 矩阵乘法运算

 - 几何级数时间复杂度 - 汉诺塔

 - 阶乘时间复杂度 - 旅行经销商问题

9) O(n!)

概念解释:

b = n^a a叫已n为底的b的对数

log(a)(b)=n a是底数、b是真数 n是对数;

log2N --->log24 =2 log28 =3 3是以为2底的8的对数;

while循环每次*2 log2N *3 log3N

猜你喜欢

转载自blog.csdn.net/Zzhou1990/article/details/106177525