精华内容
下载资源
问答
  • 算法描述方法有哪几种
    万次阅读
    2021-07-29 02:05:32

    答案

    一、流程图

    流程图是描述代码的一种很好的工具,利用流程图,可以很好的表现出秩序执行过程中的三种基本结构组成—顺序结构、选择结构、循环结构等。需要注意的是,在使用流程图时,规定需要使用一些基本图形。

    还有一种流程图,叫做N-S图,是在以前的流程图的基础上重新进行了改变,去掉了流程线,并且算法的每一步都用一个框进行描述,最终的执行是将所有的矩形框按照顺序连接起来。

    二、伪代码

    伪代码是一种介于我们编写的由机器执行的语言,但是又不受语法约束的代码。这种语言时无法被机器执行的,但是和流程图一样,也是一种常用的描述算法的方法。

    伪代码主要是用来表示代码之间的逻辑关系,并不能交由计算机执行。因此,主要使用对象是设计师和程序员,是用来表达在编码前对算法执行过程中的一些想法的工具。

    三、自然语言

    算法的第三种表述,就是使用自然语言进行描述。自然语言比较符合我们的阅读习惯,是一种我们都能够理解的方式。不过,这种方式的缺点是无法很准确的描述循环、选择等结构。在使用自然语言描述算法的过程中,要求算法语言简练、层次清楚。因此,要注意语言和标点符号的使用。初次之外,还要在每个步骤前加上数字的标号。

    更多相关内容
  • 五种常见的基本算法描述

    千次阅读 2020-04-18 17:25:22
    1.分治法 2.动态规划 3.贪心 4.回溯 5.分支限界法

    1.分治法

    分治法


    2.动态规划

    动归


    3.贪心

    贪心



    4.回溯

    回溯


    5.分支限界法

    分支限界

    展开全文
  • 认识C语言 -算法描述的5种方法

    千次阅读 2021-05-20 13:37:13
    在 C语言中,有 5 种常用的算法描述方法:自然语言、流程图、N-S 图、伪代码和程序设计语言。1. 自然语言描述算法上一讲《算法是什么》中给出的解决问题的算法 a、算法 b 和算法 c 都是用自然语言来表示算法的(见上...

    在 C语言中,有 5 种常用的算法描述方法:自然语言、流程图、N-S 图、伪代码和程序设计语言。

    1. 自然语言描述算法

    上一讲《算法是什么》中给出的解决问题的算法 a、算法 b 和算法 c 都是用自然语言来表示算法的(见上一节的图2)。自然语言就是我们日常使用的各种语言,可以是汉语、英语、日语等。

    用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较直观、容易理解。缺点是如果算法中包含了判断结构和循环结构,并且操作步骤较多时,就显得不那么直观清晰了。

    2. 用流程图描述算法

    用流程图描述算法就可以解决上述缺点。所谓流程图(Flow Chart),是指用规定的图形符号来描述算法(见表 1)。

    表 1:流程图常用的图形符号

    图形符号

    名称

    含义

    e3cb355c169e675a083df34a7db1c6fe.gif

    起止框

    程序的开始或结束

    49c1ab243c831929adc357c319304ad1.gif

    处理框

    数据的各种处理和运算操作

    2c044909d85beec7cf6f28ea133a2647.gif

    输入/输出框

    数据的输入和输出

    66fae558402a283c22e6c8f0bdb04f4a.gif

    判断框

    根据条件的不同,选择不同的操作

    f917625baeea9a40de68dd9981a93fbf.gif

    连接点

    转向流程图的他处或从他处转入

    589616e71087e6a3c87622f361ce47df.gif

    流向线

    程序的执行方向

    结构化程序设计方法中规定的三种基本程序流程结构(顺序结构、选择结构和循环结构)都可以用流程图明晰地表达出来(见图 1)。

    28c5d8a31b3677a27b832fca32797650.gif

    图 1:用流程图表示的顺序结构、选择(条件分支)结构、循环结构三种流程

    3. 用 N-S 图描述算法

    虽然用流程图描述的算法条理清晰、通俗易懂,但是在描述大型复杂算法时,流程图的流向线较多,影响了对算法的阅读和理解。因此有两位美国学者提出了一种完全去掉流程方向线的图形描述方法,称为 N-S 图(两人名字的首字母组合)。

    N-S 图使用矩形框来表达各种处理步骤和三种基本结构(见图 2),全部算法都写在一个矩形框中。

    289f76de33098a37e7bf5684710fe077.gif

    图 2:用 N-S 图表示的顺序结构、选择(条件分支)结构、循环结构三种流程

    图 3 展示了分别用自然语言、流程图和 N-S 图解决同一问题的算法描述。

    f2ff8ae243c4182ff3f21e65d443f8f2.gif

    图 3:分别用自然语言、流程图和 N-S 图描述的算法

    4. 用伪代码描述算法

    伪代码是用在更简洁的自然语言算法描述中,用程序设计语言的流程控制结构来表示处理步骤的执行流程和方式,用自然语言和各种符号来表示所进行的各种处理及所涉及的数据(见图 4)。它是介于程序代码和自然语言之间的一种算法描述方法。这样描述的算法书写比较紧凑、自由,也比较好理解(尤其在表达选择结构和循环结构时),同时也更有利于算法的编程实现(转化为程序)。

    4b9356618fbc32bec2ef7f254a8d8567.gif

    图 4:常见的三种流程结构的伪代码

    5. 用程序设计语言来描述算法

    算法最终都要通过程序设计语言描述出来(编程实现),并在计算机上执行。程序设计语言也是算法的最终描述形式(见图 5)。无论用何种方法描述算法,都是为了将其更方便的转化为计算机程序。

    360e7cee69cb8d49b7e1e092b8c6419d.gif

    图 5:用伪代码和程序设计语言(C语言)描述的算法

    #include

    int main(){

    int S=0;

    int i=0;

    while(i<100)

    {

    i=i+1;

    S=S+i;

    }

    printf("1+2+3+…+100=%d",S);

    system("pause");

    }

    展开全文
  • 本节是《Java数据结构及算法实战》系列的第2节,主要介绍描述算法的常用的4种方式。 要定义一个算法,我们可以用自然语言、流程图、伪代码的方式描述解决某个问题的过程或是编写一段程序来实现这个过程。比如,在...

    本节是《Java数据结构及算法实战》系列的第2节,主要介绍描述算法的常用的4种方式。

    要定义一个算法,我们可以用自然语言、流程图、伪代码的方式描述解决某个问题的过程或是编写一段程序来实现这个过程。比如,在前面所举的“学生信息管理系统”例子中,我们希望实现添加用户、删除用户、查询用户三个算法。

    1. 自然语言描述算法

    可以采用自然语言的方式来描述添加用户、删除用户、查询用户三个算法:

    • 添加用户:将用户信息添加到系统中。如果已经添加了过该用户的信息,则提示用户。否则将用户信息添加到系统中,并给出提示。
    • 删除用户:将用户信息从系统中删除。如果用户信息不存在于系统中,则提示用户。否则将用户信息从系统中删除,并给出提示。
    • 查询用户:将系统中所有的用户信息查询出来。如果系统中不存在用户,则提示用户。否则将用户信息查询出来返回,并将用户信息打印出来。

    使用自然语言描述的好处是任何人都能看懂。当然相比于伪代码或者程序语言而言,使用自然语言描述有时会显得繁琐。

    2. 流程图描述算法

    流程图(Flow Diagram)是一种通用的图形符号表示法是一种非正式的,可以清楚描述步骤和判断。图1-2展示的是用流程图的方式来描述添加用户、删除用户、查询用户三个算法。

    流程图描述算法

    相比较自然语言而言,通过流程图的描述,可以很清楚的看到操作的流向及经过的步骤。但需要注意的是,流程图应该只描述核心的操作步骤以及关键的节点判断,而不是事无巨细的把所有的操作都描述出来,否则只会让整个图看上去复杂难以理解。

    3. 伪代码描述算法

    伪代码(Pseudocode)是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。可以采用伪代码的方式来描述添加用户、删除用户、查询用户三个算法。

    添加用户的伪代码如下:

    input(student)
    if student in studentList
        print "Student exsit"
    else 
        add student in studentList
        print "Add student success"
    

    删除用户的伪代码如下:

    input(student)
    if student in studentList
        remove student from studentList
        print "Remove student success"
    else 
        print "Student not exsit"
    

    查询用户的伪代码如下:

    if student in studentList
        output studentList
    else 
        print "No student exsit"
    

    伪代码结构清晰、代码简单、可读性好,并且类似自然语言。介于自然语言与编程语言之间。以编程语言的书写形式指明算法职能。使用伪代码,不用拘泥于具体实现。相比程序语言(例如Java、C++、C等等)它更类似自然语言。它虽然不是标准的语言,却可以将整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。

    4. 程序语言描述算法

    程序语言描述算法,实际上就是用程序语言实现算法。不同的编程语言其语法不尽相同。以下是采用Java语言的方式来描述添加用户、删除用户、查询用户三个算法。

    import java.util.ArrayList;
    import java.util.List;
    
    public class StudentInfoManageSystem {
    
    	private List<Student> studentList = new ArrayList<>();
    
    	public void addStudent(Student student) {
    		// 如果已经添加了过该用户的信息,则提示用户。
    		// 否则将用户信息添加到系统中,并给出提示。
    		if (studentList.contains(student)) {
    			System.out.println("Student exsit");
    		} else {
    			studentList.add(student);
    			System.out.println("Add student success");
    		}
    	}
    
    	public void removeStudent(Student student) {
    		// 如果用户信息不存在于系统中,则提示用户。
    		// 否则将用户信息从系统中删除,并给出提示。
    		if (studentList.contains(student)) {
    			studentList.remove(student);
    			System.out.println("Remove student success");
    		} else {
    			System.out.println("Student not exsit");
    		}
    	}
    
    	public List<Student> getStudentList() {
    		// 如果系统中不存在用户,则提示用户。
    		// 否则将用户信息查询出来返回,并将用户信息打印出来。
    		if (studentList.isEmpty()) {
    			System.out.println("No student exsit");
    		} else {
    			for (Student s : studentList) {
    				System.out.format("Student info: name %s, age %d, phone %s, address %s%n", 
    						s.getName(), s.getAge(), s.getPhoneNumer(), s.getAddress());
    			}
    		}
    
    		return studentList;
    	}
    }
    

    为了演示上述算法,还需要一个应用入口。我们用StudentInfoManageSystemDemo类来表示应用主程序,代码如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class StudentInfoManageSystemDemo {
    
    	public static void main(String[] args) {
    		// 初始化系统
    		StudentInfoManageSystem system = new StudentInfoManageSystem();
    
    		// 初始化学生信息
    		Student student = new Student(32, "Way Lau", "17088888888", "Shenzhen");
    
    		// 添加学生
    		system.addStudent(student); // Add student success
    
    		// 再次添加学生
    		system.addStudent(student); // Student exsit
    
    		// 第一次查询所有学生
    		List<Student> studentList = system.getStudentList();
    
    		// 删除学生
    		system.removeStudent(student); // Remove student success
    
    		// 再次删除学生
    		system.removeStudent(student); // Student not exsit
    
    		// 查询所有学生
    		studentList = system.getStudentList(); // No student exsit
    
    	}
    
    }
    

    运行上述程序,可以看到控制台输出内容如下:

    Add student success
    Student exsit
    Student info: name Way Lau, age 32, phone 17088888888, address Shenzhen
    Remove student success
    Student not exsit
    No student exsit
    

    程序语言描述算法一步到位,写出的算法可直接交予计算机处理。对于懂得这类程序语言的开发者而言,通过运行程序可以马上验证算法的正确性。当然其缺点也较为明显:

    • 不便于体现自顶向下、逐步求解的思想;
    • 程序语言包含很多细节内容,会淹没算法的主要思想。

    因此,在描述某个算法时,往往通过几种描述方式结合起来使用。

    参考引用

    展开全文
  • 线性数据结构及其对应的常见算法 线性表(分别基于数组和链表实现一遍) 栈 队列 递归 分治 堆 求数 搜索 图 LeetCode 反转 二叉树 二叉查找树 二分查找 双指针 滑动窗口 数据结构设计 位运算 回溯(DFS) + 剪枝 排列 ...
  • 机器学习常见算法分类

    千次阅读 2021-02-03 19:32:43
    “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,...
  • 人工智能常见算法简介

    万次阅读 2019-02-15 13:17:32
      人工智能的三大基石—算法、数据和计算能力,算法作为其他之一,是非常重要的...一、按照模型训练方式不同可以分为监督学习(Supervised Learning),无监督学习(Unsupervised Learning)、半监督学习(Semi-...
  • 文章目录1 分治算法的一般性描述1.1 分支算法的时间分析1.2 两类常见的递推方程与求解方法2 总结 1 分治算法的一般性描述 设分治算法为:Divide-and-Conquer§ 设计要点 原问题可以划分或者规约为规模较小的...
  • JS常见算法小总结

    万次阅读 多人点赞 2019-05-14 16:23:21
    今天与大家一起来测试一下常用算法的性能解析: 首先我们创建一个含有十万个数组的数组用来测试: let array = []; for (let i = 0; i < 100000; i++) { array.push(i) } 接下来我们一起分析各个算法的性能: ...
  • 几种常见算法思想

    千次阅读 2019-11-10 21:47:38
    算法是对特定问题求解步骤的一种描述,通俗一点来说,算法就是一种方案,根据现有的特定的问题提出的一种解决方案。程序=数据结构+算法+程序设计语言,首先根据程序要处理的数据设计数据结构,再设计相应的算法来...
  • 10种常见AI算法

    千次阅读 2019-10-08 12:55:39
    感知机 二分类 二分类的线性分类模型,也是判别模型。 目的是求出把训练数据进行线性划分的分离超平面。 感知机是神经网络和支持向量机的基础。 学习策略:极小化损失函数。...是一种分类和回归方法,有监督学...
  • 《算法导论》常见算法总结

    万次阅读 多人点赞 2018-11-08 15:51:55
    总结 线性时间的排序方法相对于比较排序在时间复杂度上有提高,但是同时需要牺牲额外的空间开销,这也是正常的。 ———————————————————————————————————————————— 中位...
  • 常见分类算法

    千次阅读 2020-08-02 16:11:46
    算法假定给定目标值时属性之间相互条件独立,即没有哪个属性变量对于决策结果占很大(很小)的比重,一定程度上降低了贝叶斯分类算法的分类效果,但在实际应用场景中,极大简化了贝叶斯方法的复杂性。 1.2 算法...
  • 常见垃圾收集算法(4种)

    千次阅读 2019-08-20 22:26:59
    几种常见的垃圾收集算法的核心思想。  1.Mark-Sweep(标记-清除)算法  这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段...
  • 常见算法设计方法

    千次阅读 2019-08-01 20:22:46
    为了获得有效的算法,必须了解一些解体的基本思想和方法。对于很多问题,只要仔细分析了数据对象后,相应的处理方法就有了;对于有些问题则不然。然而,作为探寻问题求解思路的基本思想和方法,对于任何算法设计都是...
  • 常见聚类算法总结

    万次阅读 2018-09-07 17:12:55
    1.常见算法 1.原型聚类 “原型”是指样本空间中具有代表性的店。此类算法假设聚类结构能够通过一组原型刻画,通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解。–西瓜书 (1).K均值聚类(K-...
  • 常见加密算法介绍

    千次阅读 2020-01-02 15:48:31
    做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见的加密算法类型大体可以分为三类:对称加密,非...
  • 了解算法常见描述方法 2. 会用自然语言流程图描述算法知道一些常用的计算机语言 3. 通过对算法描述体验描述算法对解决问题的重要性养成清晰描述问 题的习惯 我探究我发现 活动一用自然语言描述算法 一个农夫带...
  • 算法与程序设计:算法的表述方式及其发展(学习笔记)算法与程序设计算法概念分析算法的表述方法自然语言流程图N-S图PAD图伪代码算法描述的发展现状 通俗来讲,算法是定义如何完成一个任务的若干步骤的集合。算法的...
  • 机器学习常见算法

    万次阅读 2018-08-21 21:47:27
    1. 线性回归 线性回归可能是统计学和机器学习中最知名和最易...线性回归用一个等式表示,通过找到输入变量的特定权重(B),来描述输入变量(x)与输出变量(y)之间的线性关系。   Linear Regression 举例:...
  • 了解算法常见描述方法 2. 会用自然语言流程图描述算法知道一些常用的计算机语言 3. 通过对算法描述体验描述算法对解决问题的重要性养成清晰描述问 题的习惯 我探究我发现 活动一用自然语言描述算法 一个农夫带...
  • 算法中七种常见的时间复杂度

    万次阅读 多人点赞 2020-09-17 17:11:17
    具体来说,它描述算法输入任意增加时,算法的运行时间是如何变化的。虽然这是一个简洁的定义,但我不认识哪个 5 岁小孩能理解这种表述,所以让我们进一步详细讲解。以下是一些定义: 1. 算法 — 一组逻辑步骤,...
  • 常见算法时间复杂度

    千次阅读 2015-04-09 16:51:44
    同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 一、时间复杂度 (1)时间...
  • 1. 书中第一部分从讲述相关的C语言基础知识和算法分析方法入手,在随后的章节中采用软件工程中的良好准则,结合作者的实践经验将基于接口的C程序设计理念贯穿全书。使得本书中的数据结构和算法实现能够以接口的形式...
  • 常见算法思想(整理)

    千次阅读 2018-04-29 00:09:23
    1、算法特征 算法的英文名称是Algorithm,这个词在1957年之前在Webster’s New World Dictionary(《韦氏新世界词典》)中还未出现,只能找到带有它的古代涵义的较老形式的“Algorism”(算术),是指用阿拉伯数字进行...
  • 基于平时对【算法】的了解,特写此文来整理一下常见算法。注意,此文不对算法的具体细节做深究,仅供基础入门学习。限于篇幅原因,本文先介绍【对称加密算法】。 对称加密算法 对称加密算法,顾名思义,就是...
  • 人工智能—机器学习常见算法

    千次阅读 2018-01-29 10:00:16
    摘要 之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,...这里IT经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考。    机器学习的算法很多。很多时候困惑人们都是,很多算法是一

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 239,201
精华内容 95,680
关键字:

常见的算法描述方式