数据结构与算法序

本文介绍了数据结构和算法的相关知识。数据结构描述数据元素间的关系,有四大逻辑结构和两大物理结构。算法有五个基本特征,设计要求包括正确性、可读性等。还阐述了算法效率,如时间复杂度用大O记法体现,有平均和最坏情况,也提到了空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构

含义

简单来说,数据结构就是关系,描述数据元素之间存在的一种或多特定关系的集合。

程序=数据结构+算法

分类

  • 逻辑结构:指数据对象中数据元素之间的相互关系;
  • 物理结构:指数据的逻辑结构在计算机中的存储形式。

四大逻辑结构

  • 集合结构
    在这里插入图片描述
  • 线性结构在这里插入图片描述
  • 树形结构
    在这里插入图片描述
  • 图形结构
    在这里插入图片描述

两大物理结构

  • 顺序存储结构
    把数据元素存在地址连续的存储单元里,数据间的逻辑关系和物理关系是一致的。
    如,数组结构。
    在这里插入图片描述
  • 链式存储结构
    把数据元素存在任意存储单元里,这组存储单元可以连续,也可以不连续。
    这样的形式其存储关系并不能反映逻辑关系,所以需要一个指针存放数据元素的地址,这样通过地址就可以找到相关元素的位置。
    在这里插入图片描述

算法

五个基本特征

  • 输入:算法具有零个多个输入。
  • 输出:算法至少有一个多个输出。
  • 有穷性:算法的执行步骤有限,并且每个步骤要在可接受内的时间内完成。
  • 确定性:每个步骤都有具体明确的含义,只有一条执行路径,相同的输入只能有唯一的输出结果。
  • 可行性:算法的每一步都能够通过执行有限次数完成。

算法设计的要求

  • 正确性
    • 算法程序没有语法错误。
    • 算法程序对于合法输入能够产生满足要求的输出。
    • 算法程序对于非法输入能够产生满足规格的说明。
    • 算法程序对于故意刁难的测试输入都有满足要求的输出结果。
  • 可读性:算法设计的目的之一就是便于阅读、理解和交流。
  • 健壮性:当输入的数据不合理时,算法能做出相关处理,而不是产生异常、崩溃或莫名其妙的结果。
  • 时间效率高和存储量低

算法效率

时间复杂度

用大O记法来体现时间复杂度。
在这里插入图片描述
常用的时间复杂度所耗费时间从小到大依次是:
O(1)&lt;O(log(n))&lt;O(n)&lt;O(nlog(n))&lt;O(n2)&lt;O(n3)&lt;O(2n)&lt;O(n!)&lt;O(nn)O(1)&lt;O(log(n))&lt;O(n)&lt;O(nlog(n))&lt;O(n^2)&lt;O(n^3)&lt;O(2^n)&lt;O(n!)&lt;O(n^n)O(1)<O(log(n))<O(n)<O(nlog(n))<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
平均情况与最坏情况
当查找一个有n个随机数字数组的某个数字,最好的情况是第一个数字就是,则时间复杂度为O(1),但也有可能这个数字在最后一个位置,则时间复杂度为O(n)。

  • 平均运行时间是期望运行时间
  • 最坏运行时间是一种保证。通常除非特别限定,一般提到的运行时间都是最坏情况的运行时间。
空间复杂度

在写代码时,完全可以用空间换取时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值