01初识算法

1.1 算法无处不在

用了一些例子来说明生活中的算法

  1. 查字典(二分法
  2. 整理扑克(插入排序)我小时候真用着这种方法
  3. 货币找零(贪心算法)在这里以每次都找最大面值的货币找零

1.2 算法和数据结构

1.2.1 算法定义

算法(algorithm) 是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。

  1. 确定性:算法的每个步骤都是明确定义的,不会产生歧义。
  2. 有穷性:算法必须在执行有限步骤后结束,不会无限循环。
  3. 输入:算法有零个或多个输入,这些输入是算法执行所需的数据。
  4. 输出:算法至少有一个输出,表示算法执行的结果。
  5. 可行性:算法中的每个步骤都必须是可执行的,即在当前的计算模型下可以实现。
  6. 通用性:算法通常不针对特定问题设计,而是可以应用于解决一类问题。
  7. 效率性:好的算法应该在时间和空间复杂度上都是高效的,即用最少的计算资源解决问题。
  8. 健壮性:算法应该能够处理各种输入,包括异常和边界情况,而不会崩溃或产生错误的结果。

1.2.2   数据结构定义

==数据结构(data structure)==是组织和存储数据的方式,涵盖数据内容、数据之间关系和数据操作方法,它具有以下设计目标。

  1. 逻辑结构:数据结构中数据元素之间的逻辑关系,它描述了数据元素之间的相互关系。逻辑结构通常分为线性结构和非线性结构。线性结构的数据元素之间是一对一的关系,如数组、链表、栈和队列;非线性结构的数据元素之间是一对多或多对多的关系,如图、树等。

  2. 物理结构:数据结构在计算机存储器中的存储方式,也称为存储结构。物理结构决定了数据元素在内存中是如何布局的,常见的物理结构包括连续存储和非连续存储。

  3. 数据操作:数据结构定义了可以对数据元素执行的操作,如插入、删除、查找、排序等。不同的数据结构支持不同的操作,且每种操作的效率也不同。

  4. 抽象数据类型(ADT):数据结构通常与抽象数据类型相关联,ADT定义了数据的逻辑结构和操作,但并不涉及具体的实现细节。例如,栈是一种抽象数据类型,它定义了压栈和弹栈等操作,但具体的实现可以是数组或链表。

  5. 效率:不同的数据结构在不同的操作下有不同的效率表现。例如,数组在随机访问方面效率很高,但在插入和删除时可能需要移动大量元素;链表在插入和删除时不需要移动元素,但在随机访问方面效率较低。

  6. 适用场景:不同的数据结构适用于不同的应用场景。选择适当的数据结构可以提高程序的性能和可维护性。

1.2.3   数据结构与算法的关系

![[Pasted image 20240804153956.png]]

总结

  • 算法其实也充斥在我们的生活当中
  • 算法是解决问题的一组指令或者说是一种操作步骤
  • 数据结构是计算机中组织和存储数据的方式
  • 算法与数据结构紧密相连
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tyb333333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值