尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

读大话数据结构的总结1

读大话数据结构的总结1
📅 发布时间:2026/6/20 8:20:29

如下知识均来自大话数据结构这本书,作者程杰

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法具有五个基本特性: 输入、输出、有穷性、确定性和可行性

1.输入:算法可以有输入,也可以没有
2.输出:算法必须要至少有一个输出
3.有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成
4.确定性:算法的每一步骤都具有确定的含义, 不会出现二义性。可以理解为在相同输入条件下,只有唯一的执行路径,输出的值也是唯一的,每个步骤都被精确定义没有歧义
5.可行性::算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成

好的算法应具有正确性、可读性、健壮性、高效率和低存储量的特征

1.正确性:在具有算法的五个基本特性之外,还有能反应问题需求,能得到问题的正确结果

作者在这里将正确分为了四个层次
a.算法程序没有语法错误。
b.算法程序对于合法的输入数据能够产生满足要求的输出结果。
c.算法程序对于非法的输入数据能够得出满足规格说明的结果。
d.算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果。
由于实现第四层次代价太大,把前三层作为一个算法是否正确的标准

2.可读性:算法设计的另一目的是为了便于阅读、 理解和交流
3.健壮性:当输入数据不合法时,算法也能做出相关处理, 而不是产生异常或莫名其妙的结果
4.时间效率高和存储量低:就是执行时间更短,占用内存和存储空间更少

既然算法效率是度量算法好坏的标准之一,那我们就要有算法效率的度量方法

1.事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。

但这种方法有很多缺点
首先要有测试程序,但如果算法很垃圾,不就白忙活,还得搞个程序
其次,时间的比较依赖计算机硬件和软件等环境因素,硬件厉害就算的快,而且还要考虑到不同编译器的实现方式不同造成的影响,CPU使用率和内存占用情况不同也会造成时间的差异,要考虑的因素太多太不稳定
算法的数据你要想,数据的规模你要想,而且效率高的算法在小数据量的测试面前往往得不到体现,数据的标准很难统一
所以不采用这种方法

2.事前分析估算法:在计算机程序编制前,依据统计方法对算法进行估算。

为了忽略很多影响,我们抽象了一下,发现算法的运行时间和有时间消耗的基本操作的执行次数成正比
就是把实际的程序编译,执行环境,硬件,与输入无关联的代码语句等等忽略掉,抽象出最本质的数学关系,只看算法本身,近似于一种函数关系,变量是输入规模,因变量是运行次数
因此算法效率的判断本质上是数学(我觉得计算机的算法本质也是数学)

既然判断算法效率的本质是函数,那我们就需要判断函数与函数之间效率的一种标准

函数的渐近增长

函数的渐近增长:n为输入规模,给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的 n > N, f(n)总是比 g(n)大,那么,我们说 f(n)的增长渐近快于g(n)。

我们在判断时,单一的输入规模很难做出准确判断,这时就需要判断函数的渐近增长性,渐近增长更大,效率就更低
而且在判断时,只需要关注最高次幂的项,最高次项相乘的常数也可以忽略

上面的内容一总结,我们推出了算法时间复杂度

算法时间复杂度,也就是算法的时间量度,记作: T(n)= O(f(n))。 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n) 是问题规模n的某个函数。
一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。
这样用大写O()来体现算法时间复杂度的记法,我们称之为大O记法
我们如何推导O呢
1.如果有常数项,用常数 1 取代运行时间中的所有加法常数。
2.在第一步修改后的运行次数函数中,只保留最高阶项。
3.如果最高阶项存在且不是 1,则去除与这个项相乘的常数。
得到的结果就是O
实际的运算其实比较复杂,要考虑一些实际情况,可以去看原书,更多的是数学能力的考察

通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间,也就是最坏时间复杂度

当然除了时间复杂度,还有空间复杂度,空间复杂度的计算,这里就不再陈述了(因为它实际更复杂一些)

相关新闻

  • 作业4
  • 2026年网络安全展望:AI加速、攻击面扩张与专业化红队的未来
  • 接入Impala、Hive 的报表、BI、数据中台的国内厂商评价及接口框架

最新新闻

  • 嵌入式ADC队列化设计:QADC扫描模式与边界条件深度解析
  • 终极网盘直链下载助手:免费突破九大网盘限速的完整指南
  • 2026年6月市面上正规的风淋室服务商推荐,风淋室/净化彩钢板/电解钢板/手工净化板/机制净化板,风淋室厂家哪家靠谱 - 品牌推荐师
  • 深聊专业的 PPH 槽罐怎么选?纽英其为你支招 - 工业品牌热点
  • 口碑好的智能水务品牌推荐与分析 - myqiye
  • ARM Cortex-M0+微控制器低功耗设计:从架构到实战的嵌入式系统优化

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号