Python - 数据结构之算法设计

  • 简述

    算法是一个循序渐进的过程,它定义了一组指令以一定的顺序执行以获得所需的输出。算法通常独立于底层语言创建,即算法可以用一种以上的编程语言实现。
    从数据结构的角度来看,以下是一些重要的算法类别 -
    • Search- 在数据结构中搜索项目的算法。
    • Sort- 按特定顺序对项目进行排序的算法。
    • Insert- 在数据结构中插入项目的算法。
    • Update- 更新数据结构中现有项目的算法。
    • Delete- 从数据结构中删除现有项目的算法。
  • 算法的特征

    并不是所有的过程都可以称为算法。算法应具有以下特征 -
    • Unambiguous− 算法应该清晰明确。它的每一个步骤(或阶段),以及它们的输入/输出都应该是清晰的,并且必须只导致一个含义。
    • Input− 算法应该有 0 个或更多定义明确的输入。
    • Output− 一个算法应该有 1 个或多个定义明确的输出,并且应该匹配所需的输出。
    • Finiteness− 算法必须在有限步数后终止。
    • Feasibility− 在可用资源的情况下应该是可行的。
    • Independent− 算法应该有逐步的方向,它应该独立于任何编程代码。
  • 如何编写算法?

    编写算法没有明确的标准。相反,它依赖于问题和资源。永远不会编写算法来支持特定的编程代码。
    正如我们所知,所有编程语言都共享基本的代码结构,如循环(do、for、while)、流控制(if-else)等。这些通用结构可用于编写算法。
    我们以循序渐进的方式编写算法,但并非总是如此。算法编写是一个过程,是在明确问题域之后执行的。也就是说,我们应该知道我们正在为其设计解决方案的问题域。

    例子

    让我们尝试通过一个例子来学习算法写作。
    • Problem− 设计一个算法来添加两个数字并显示结果。
    步骤 1- 开始
    步骤 2− 声明三个整数a, b&c
    步骤 3- 定义值a&b
    步骤 4- 添加值a&b
    步骤 5- 将步骤 4的输出存储到c
    步骤 6- 打印c
    步骤 7- 停止
    算法告诉程序员如何编写程序。或者,该算法可以写成 -
    步骤 1- 开始添加
    步骤 2- 获取值a&b
    步骤 3- c ← a + b
    步骤 4− 显示 c
    步骤 5- 停止
    在算法的设计和分析中,通常使用第二种方法来描述算法。它使分析师可以轻松地分析算法而忽略所有不需要的定义。他可以观察正在使用哪些操作以及流程是如何进行的。
    写作步骤 numbers, 是可选的。
    我们设计一种算法来获得给定问题的解决方案。一个问题可以通过多种方式解决。
    一题多解
    因此,对于给定的问题,可以推导出许多解决方案算法。下一步是分析那些提出的解决方案算法并实施最合适的解决方案。