数据结构与算法(python版)—— 绪论

本文介绍了用计算机解决问题的两个阶段,强调了算法的性质,如有穷性、能行性等,并探讨了算法设计策略如枚举法、贪心法。还涉及了时间代价和空间代价的概念,以及数据结构的基础知识,包括线性表、树结构和图存储结构,最后讲解了大O表示法在分析算法效率中的应用。
摘要由CSDN通过智能技术生成

目录

用计算机解决问题

算法的性质

算法的描述

算法设计

时间代价和空间代价

数据结构

 数量级函数

大O表示法

用计算机解决问题

用计算机解决问题的过程分为两个阶段:程序开发者针对要解决的问题开发出相应的程序,使用者运行程序处理问题的具体实例,完成具体计算。

考虑一个计算问题时,要注意三个概念:

  • 问题:一个问题W是需要解决(需要用计算求解)的一个具体需求。
  • 问题实例:问题W的一个实例w是该问题的一个具体例子。
  • 算法:解决问题W的一个算法A,是对一种计算过程的严格描述。对W的任何一个实例w,实施算法A描述的计算过程,就能得到w的解。

算法的性质

算法是对计算过程的严格描述。

  • 有穷性:一个算法的描述应该由优先多条指令或语句构成。
  • 能行性:算法中所描述的操作过程可以完全机械地进行。
  • 确定性:根据算法的描述将产生出唯一的确定的一个动作序列。
  • 终止性:对问题的任何实例,算法产生的动作序列是有穷的,或者终止并给出该问题实例的解;或者终止并指出给定的输入无解。
  • 输入/输出:有明确定义的输入和输出。

算法的描述

  • 采用自然语言描述,比较容易阅读、理解。
  • 采用在自然语言描述中结合一些数学记法或公式的描述形式。
  • 采用严格定义的形式化记法形式描述。如图灵机模型。
  • 用类似某种编程语言的形式描述算法过程,其中参杂使用一些数学符号和记号,用于描述一些细节和具体操作。
  • 采用某种伪代码形式,结合编码语言的常用结构、形式化的数学记法代表的严格描述和自然语言。

算法设计

算法设计中一些常见的通用想法

  • 枚举法
  • 贪心法:根据问题的信息尽可能做出部分的解,并基于部分解逐步扩充得到完整的解。
  • 分治法:把复杂问题分解为相对简单的子问题。
  • 回溯法(搜索法)
  • 动态规划法
  • 分支限界法

算法分析的主要任务就是弄清算法的资源消耗,最重要的作用是作为评价算法的一种标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值