当前位置: 首页 > 编程笔记 >

算法规范-数据结构介绍

马朝斑
2023-03-14
本文向大家介绍算法规范-数据结构介绍,包括了算法规范-数据结构介绍的使用技巧和注意事项,需要的朋友参考一下

算法定义为一组有限的指令,如果遵循这些指令,它们将执行特定的任务。所有算法必须满足以下条件

输入。一种算法具有零个或多个输入,这些输入是从一组指定的对象中获取或收集的。

输出。一种算法具有一个或多个与输入具有特定关系的输出。

确定性。必须明确定义每个步骤;每条指令必须清晰明确。

有限。该算法必须始终在有限数量的步骤后完成或终止。

效力。要完成的所有操作必须足够基本,以使它们可以精确且以有限的长度进行。

我们可以通过多种方式描述算法。

  • 自然语言:采用英语等自然语言

  • 流程图:仅在算法小而简单的情况下,图形表示才表示流程图。

  • 伪代码:此伪代码会跳过大多数歧义问题;关于语法编程语言没有特殊性。

示例1:用于计算数字的阶乘值的算法

Step 1: a number n is inputted
Step 2: variable final is set as 1
Step 3: final<= final * n
Step 4: decrease n
Step 5: verify if n is equal to 0
Step 6: if n is equal to zero, goto step 8 (break out of loop)
Step 7: else goto step 3
Step 8: the result final is printed

递归算法

递归算法调用自身,通常将返回值作为参数再次传递给算法。此参数表示输入,而返回值表示输出。

递归算法定义为一种简化方法,可将问题分为性质相同的子问题。一次递归的结果被视为下一次递归的输入。补充是以自相似的方式进行的。该算法以较小的输入值调用自身,并通过简单地对这些较小的值完成运算来获得结果。阶乘斐波那契数列的生成表示为递归算法的示例。

示例:使用递归编写阶乘函数

intfactorialA(int n)
{
   return n * factorialA(n-1);
}
 类似资料:
  • 动态规划 建议观看MIT算法导论-动态规划中的课程。

  • 定义 动态规划(Dynamic Programming)是一种将一个问题分解成多个子问题,从而简化问题,提升效率的算法思想。它可以应用于各种算法领域,如最短路径问题、背包问题、字符串匹配问题等。在JavaScript中,动态规划可以用于优化算法性能,提高程序效率。 动态规划的核心思想是将大问题分解成小问题,通过解决子问题来解决大问题。这种思想有时被称为“分治法”。 动态规划有两个核心特征:重叠子问

  • leetcode/lintcode上的算法题 关于问题的答案和解体的思路,可以移步 : https://github.com/zhaozhengcoder/Algorithm About 这个仓库最初的想法是把lintcode/lintocde上面的算法题目整理一下,因为很多题目太多了显得太乱了,就不继续在GitHub上面写了,以前写的一部分移到我的博客上面了。 GitHub上面打算整理一些比较典

  • 数据结构是存储数据的编程方式,因此可以有效地使用数据。 几乎每个企业应用程序都以一种或另一种方式使用各种类型的数据结构。

  • KMP算法解决的问题是字符匹配,这个算法把字符匹配的时间复杂度缩小到O(m+n),而空间复杂度也只有O(m),n是target的长度,m是pattern的长度。 部分匹配表(Next数组):表的作用是 让算法无需多次匹配S中的任何字符。能够实现线性时间搜索的关键是 在不错过任何潜在匹配的情况下,我们”预搜索”这个模式串本身并将其译成一个包含所有可能失配的位置对应可以绕过最多无效字符的列表。 Nex

  • 目录表 简介 列表 对象与类的快速入门 使用列表 元组 使用元组 元组与打印语句 字典 使用字典 序列 使用序列 参考 对象与参考 更多字符串的内容 字符串的方法 概括 简介 数据结构基本上就是——它们是可以处理一些 数据 的 结构 。或者说,它们是用来存储一组相关数据的。 在Python中有三种内建的数据结构——列表、元组和字典。我们将会学习如何使用它们,以及它们如何使编程变得简单。