数据结构与算法基础概念

本文深入介绍了数据结构与算法的基础概念,包括数据结构的定义、算法的特性以及设计原则。重点阐述了算法的时间复杂度和空间复杂度,通过大O渐进表示法进行分析,并列举了常见的时间复杂度分类。同时,强调了正确性、可读性和健壮性在算法设计中的重要性,以及优化算法效率和降低存储需求的目标。
摘要由CSDN通过智能技术生成

一、基础概念

1、什么是数据结构?

数据结构:就是一个能组在一起的集合对象。比如:数组,链表,队列等。

2、什么是算法?

算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作。

数据结构与算法有什么关系?

程序 = 数据结构 + 算法

  • 数据结构:如何用数据正确地描述现实世界的问题(逻辑结构),并存入计算机(存储结构)。
  • 算法:如何高效地处理上述这些数据,以解决实际问题。

可见数据结构是将现实问题转化为电脑可以处理的数据,而算法则是求解问题的步骤;因此针对同一数据结构,求解问题的步骤方法可以不同,因此使用的算法也可以不同。

2.1 算法的特性

算法的五个特征:有穷性、确定性、可行性、有输入、有输出

2.2 设计原则

  • 正确性
  • 可读性
  • 健壮性(少bug):写出代码很少会出现bug,而且系统比较稳定。
  • 高效率与低存储:内存 + CPU,内存占用最小(防止OOM),CPU占用最小,运算速度最快。

2.3 评价算法的两个重要指标

  • 时间复杂度:运行一个程序所花费的时间。
  • 空间复杂度:运行程序所需要占用的内存大小。

3、时间复杂度

3.1 时间复杂度

时间复杂度:运行一个程序所花费的时间。

时间复杂度表示法:大O渐进表示法

比如:O(1),O(n),O(nlogn),O(n^2),O(logn),O(n!)。

3.2 时间复杂度如何来分析

  • 找到有循环的地方,而且要找循环量最大的那一段
  • 找有网络请求(RPC,远程调用,分布式,数据库请求)的地方。估算平均时间。

注意:计算时间复杂度往往是计算比较大的,而且是不确定的数,如果已经确定了,那么就不用计算了,也是我们说的常量,常量可以忽略。

3.3 时间复杂度分析比较

时间复杂度分类:

  • 常数:O(1) 1表示是常数,所有能确定的数字我们都用O(1)。比如O(1000) = O(1)
  • 对数:O(logn),O(nlogn)
  • 线性:O(n)
  • 线性对数:O(nlogn)
  • 平方:O(n^2)
  • N次方:O(n^n)

记忆方式:常 < 对 < 幂< 指 < 阶
在这里插入图片描述

几种常见的时间复杂度分析:
在这里插入图片描述

4、空间复杂度

4.1 什么是空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。

空间复杂度表示法:大O渐进表示法

空间复杂度不是程序占用了多少 bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。
比如:O(1),O(n),O(nlogn),O(n^2),O(logn),O(n!)。

参考文章讲的很详细

– 求知若饥,虚心若愚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值