数据结构-数据结构的算法

数据结构的算法

文章目录

1.结构数据与算法的关系
2.算法定义
3.算法特性
4. 算法设计要求

总结


1.结构数据与算法的关系

结构数据和算法是紧密相关的。结构数据是指数据在内存中的存储方式和组织方式,而算法是指解决问题的步骤和策略。

结构数据和算法之间的关系有以下几个方面:

  1. 数据结构为算法提供了基础。不同的数据结构适用于不同的算法,选择合适的数据结构能够提高算法的效率和性能。例如,使用数组可以实现快速的访问和操作,而链表可以动态地插入和删除元素。

  2. 算法需要对数据结构进行操作。算法是在数据结构上执行的一系列操作,这些操作包括遍历、搜索、排序等。算法通过对数据结构的操作来解决实际问题。

  3. 数据结构和算法相互促进。数据结构的选择和设计受到算法的要求和限制的影响,而算法的设计和优化也需要考虑数据结构的特性和约束。优秀的数据结构可以提高算法的效率,而高效的算法可以充分利用数据结构的特性。

综上所述,数据结构和算法是相互依赖、相互影响的。选择合适的数据结构能够提高算法的效率和性能,而优秀的算法可以充分利用数据结构的特性。因此,学习和理解数据结构和算法是提高编程能力和解决实际问题的重要基础。

2.算法定义

什么是算法呢?算法是描述解决问题的方法。算法(Agorithm)这个单词最早出现在波斯数学家阿勒·花刺子密在公元825年(相当于我们中国的唐朝时期)所写的《印度数字算术》中。

如今普遍认可的对算法的定义是:
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

刚才的例子我们也看到,对于给定的问题,是可以有多种算法来解决的。那我就要问问你们,有没有通用的算法呀?这个问题其实很弱智,就像问有没有可以包治百病的药呀!
现实世界中的问题千奇百怪,算法当然也就千变万化,没有通用的算法可以解决所有的问题。甚至解决一个小问题,很优秀的算法却不一定适合它。
算法定义中,提到了指令,指令能被人或机器等计算装置执行。它可以是计算机指令,也可以是我们平时的语言文字。

3.算法特性

算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。
1.输入输出
输入和输出特性比较容易理解,算法具有零个或多个输入。尽管对于绝大多数算法来说,输入参数都是必要的,但对于个别情况,如打印“hello world!”这样的代码,不需要任何输入参数,因此算法的输入可以是零个。算法至少有一个或多个输出,算法是一定需要输出的,不需要输出,你用这个算法干吗?输出的形式可以是打印输出,也可以是返回一个或多个值等。
2.有穷性
有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。现实中经常会写出死循环的代码,这就是不满足有穷性。当然这里有穷的概念并不是纯数学意义的,而是在实际应用当中合理的、可以接受的“有边界”。你说你写一个算法,计算机需要算上个二十年,一定会结束,它在数学意义上是有穷了,可是媳妇都熬成婆了,算法的意义也不就大了。
3.确定性
确定性:算法的每一步骤都具有确定的含义,不会出现二义性。算法在一定条件下,只有一条执行路径,相同的输入只能有唯一的输出结果。算法的每个步骤被精确定义而无歧义。
4.可行性
可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。可行性意味着算法可以转换为程序上机运行,并得到正确的结果。

4.算法设计的要求

1.正确性   2.可读性   3.健壮性   4.时间效率高和储存量低


总结

这一章主要谈了算法的一些基本概念。谈到了数据结构与算法的关系是相互依赖不可分割的。
算法的定义:算法是解决特定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作。
算法的特性:有穷性、确定性、可行性、输入、输出。
算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求。算法特性与算法设计容易混,需要对比记忆。
算法的度量方法:事后统计方法(不科学、不准确)、事前分析估算方法。在讲解如何用事前分析估算方法之前,我们先给出了函数渐近增长的定义。函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n> N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快于g(n)。于是我们可以得出一个结论,判断一个算法好不好,我们只通过少量的数据是不能做出准确判断的,如果我们可以对比算法的关键执行次数函数的渐近增长性,基本就可以分析出:某个算法,随着n的变大,它会越来越优于另一算法,或者越来越差于另一算法。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值