数据结构开篇:逻辑结构和物理结构、算法复杂度

简介: 数据结构开篇:逻辑结构和物理结构、算法复杂度

逻辑结构:

1.集合结构:数据元素只是同属于一个集合

2.线性结构:一对一关系

3.树形结构:一对多的关系

4.图形结构:数据元素是多对多的关系

物理结构:

又叫存储结构,是指数据的逻辑结构在计算机中的存储形式

顺序存储结构:数组结构,连续的存储单元,数据的逻辑关系和物理关系一致

链式存储结构:任意的存储单元,数据的逻辑关系和物理关系不一致。

1.算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

2.算法有5个特性:

(1)输入:算法有零个或多个输入

(2)输出:算法至少有一个输出

(3)有穷性

(4)确定性:

(6)可行性

3.算法设计的要求:

正确性:错误说明,没有语法错误,合法输入有合法输出

可读性:便于阅读、理解和交流

健壮性:不容易崩溃

时间效率高和存储量低

算法效率的度量方法:

效率高即是算法的执行时间短

事后统计方法:用计时器对每个算法计时

事前分析估计方法:编写算法前用数学统计方法估计效率

因素:1.算法策略,方案

2.编译产生的代码质量

3.问题的输入规模

4.机器执行指令的速度

算法的复杂度:侧重研究算法随着输入规模扩大增长量的一个抽象

函数的渐进增长:忽略所加常数,最高次项的系数可视为1,应该关注的主项的阶数

算法的时间复杂度:执行次数T(n)随规模n的变化情况,确定T(n)的数量及

T(n) = O(f(n)),执行次数和执行时间成正比

大O记法:T(n)增长最慢的是最优算法

对到方法:抛弃一些常数系数,抛弃低阶项


例如:常数阶O(1);

线性阶:直线增长O(n)

平方阶:O(n^2)嵌套(n*(n+1)/2

对数阶:2^x = n,得到x = log(2)n;所以是O(logn)

立方阶

指数阶

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

最坏情况与平均情况

我们所提的执行时间是最坏运行时间

算法的空间复杂度:内存存储大小

可以用空间换取时间

相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
70 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
18天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
60 16
|
1月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
26 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
1月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
33 4
|
1月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
20 0
数据结构与算法学习十四:常用排序算法总结和对比
|
1月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
30 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
1月前
|
机器学习/深度学习 存储 算法
【数据结构与算法基础】——算法复杂度
【数据结构与算法基础】——算法复杂度
|
1月前
|
算法
条件运算符与条件if的姻缘,打擂台算法和大小写字母转换,if逻辑避坑
条件运算符与条件if的姻缘,打擂台算法和大小写字母转换,if逻辑避坑
23 1
|
1月前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
1月前
|
机器学习/深度学习 存储 算法
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
下一篇
无影云桌面