算法基础知识总结SKIPSPURSUPER

数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,也简称为元素,或称为记录、结点或顶点

构成数据元素的不可分割的最小单位

是性质相同的数据元素的集合,是数据的一个子集

数据元素不是孤立存在的,它们之间存在着某种关系,数据元素相互之间的关系称为结构(Structure)

是指相互之间存在一种或多种特定关系的数据元素集合;或者说,数据结构是带结构的数据元素的集合

数据结构包括以下三个方面的内容:

有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继

例如:线性表、栈、队列、串

一个结点可能有多个直接前取和直接后继

例如:树、图

用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示

例如:C语言中用数组来实现顺序存储结构

用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示

例如:C语言中用指针来实现链式存储结构

在存储结点信息的同时,还建立附加的索引表

索引表中的每一项称为一个索引项

索引项的一般形式是:(关键字,地址)

关键字是能唯一标识一个结点的那些数据项

若每个结点在索引表中都有一个索引项,则该索引表称为稠密索引(DenseIndex)。若一组结点在索引表中只对应一个索引项,则该索引表称之为稀疏索引(SparseIndex)

根据结点的关键字直接计算出该结点的存储地址

在使用高级程序设计语言编写程序时,必须对程序中出现的每个变量、常量或表达式明确说明它们所属的数据类型

高级语言中的数据类型明显地或隐含地规定了在程序执行期间变量的所有可能的取值范围,以及在这些数值范围上所允许进行的操作

数据类型的作用:

定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称

数据类型=值的集合+值集合上的一组操作

定义:是指一个数学模型以及定义在此数学模型上的一组操作

抽象数据类型的形式定义:

抽象数据类型可用(D,S,P)三元组表示。

其中:D是数据对象;S是D上的关系集;P是对D的基本操作集

一个抽象数据类型的定义格式如下:

ADT抽象数据类型名{数据对象:<数据对象的定义>数据关系:<数据关系的定义>基本操作:<基本操作的定义>}ADT抽象数据类型名其中:

基本操作定义格式说明:

参数表:赋值参数只为操作提供输入值。引用参数以&打头,除可提供输入值外,还将返回操作结果

初始条件:描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始条件为空,则省略之

操作结果:说明操作正常完成之后,数据结构的变化状况和应返回的结果。

e.g.Circle

ADTCircle{数据对象:D={r,x,y|r,x,y均为实数}数据关系:S={|r是半径,是圆心坐标}基本操作:Circle(&C,r,x,y)操作结果:构造一个圆doubleArea(C)初始条件:圆已存在操作结果:计算面积doubleCircumference(C)初始条件:圆已存在操作结果:计算周长......}ADTCirclee.g.复数

抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现

例如:抽象数据类型“复数”的实现

算法的描述:

程序=数据结构+算法

数据结构通过算法实现操作

算法根据数据结构设计程序

一个算法必须具备以下五个重要特性:

一个好的算法首先要具备正确性,然后是健壮性,可读性,在几个方面都满足的情况下,主要考虑算法的效率,通过算法的效率高低来评判不同算法的优劣程度

算法效率以下两个方面来考虑:

两种度量方法:

注意:每条语句的执行次数又称为语句频度

O:Order数量级

一般情况下,不必计算所有操作的执行次数,而只考虑算法中基本操作执行的次数,它是问题规模n个某个函数,用T(n)表示

基本语句:

若f(n)=\(a_{m}n^{m}\)+\(a_{m-1}n^{m-1}\)+...+\(a_1n\)+\(a_0\)是m次多项式,则T(n)=O(\(n^{m}\))

忽略所有低次幂项和最高次幂系数,体现出增长率的含义

请注意:有的情况下,算法中基本操作重复执行的次数还随问题的输入数据集不同而不同

[例]顺序查找,在数组中查找值等于e的元素,返回其所在位置

复杂度:O(1)

空间复杂度:算法所需存储空间的度量,记作:S(n)=O(f(n)),其中n为问题的规模(或大小)

THE END
1.算法概述(算法基础)算法概述(算法基础) 算法概述 1.算法的概念 什么是算法 算法和数据结构 算法设计的基本步骤 2.算法分析 算法时间复杂度分析 算法空间复杂度分析 3.算法设计工具——STL STL概述 什么是STL容器 什么是STL算法 什么是STL迭代器 常用的STL容器 顺序容器 关联容器https://blog.csdn.net/qq_45702481/article/details/107704554
2.算法基础(第5版)(豆瓣)简介 《算法基础》自1997年出版以来深受读者喜爱,已经被翻译成多种语言出版,并成为世界许多高校广泛采用的算法教材之一。书中对算法设计、算法的复杂度分析展开短评 打开App写短评 不会飞的章鱼2018-01-13 20:30:38 此书中的程序用C++和Java伪代码编写 1 Tommy2019-07-04 18:02:39 内容中规中矩,分治https://m.douban.com/book/subject/26741083/
3.计算机算法基础总结本文主要是通过通俗易懂的算法和自然语言, 向大家介绍基础的计算机排序算法和查找算法, 还有一些作为一名程序猿应该知道的名词, 数据结构, 算法等等. 但是仅仅止于介绍, 因为本人能力不足, 对一些高级的算法和数据结构理解不够通透, 所以也不作太多的深入的剖析.. demo都在我的Github中能找得到.https://www.jianshu.com/p/f6e35db6bc51
4.欢迎访问《算法基础》课程教学主页《算法基础》教学资源(本科生, 2024.9~2024.12) 课程情况 授课教师:徐云; 辅导教师:王彪,沈周毅,赵宇心,欧阳宇; 教室:GT-B112;时间:周二下午6,7节(1~15周),周四上午1,2节(1~15周); 告示 1.欢迎同学们参加本课程的学习,课程从8月30日开始;(2024.9.2) http://staff.ustc.edu.cn/~xuyun/algcs.htm
5.深入理解算法:基础知识原理与架构腾讯云开发者社区二、算法基础知识 算法的定义 算法是一系列用于解决问题的步骤或规则的集合。它是一种指导计算机执行特定任务的指令,可以手动执行或通过计算机程序自动执行。 算法的特性 (1)有穷性:算法必须在有限的步骤内结束; (2)确定性:算法中的每一步都必须有明确的定义; (3)输入:算法可以接受零个或多个输入; (4)输出:https://cloud.tencent.com/developer/article/2449820
6.算法基础(第5版)此外,本书在每章末尾都提供了大量练习,而且还提供了全面的教辅材料及答案,是教授和学习算法设计与分析的理想教材。 本书适合高等院校学生、程序员及算法分析和设计人员阅读。 本书特色 《算法基础》自1997年出版以来深受读者喜爱,已经被翻译成多种语言出版,并成为世界许多高校广泛采用的算法教材之一。书中对算法设计https://www.ituring.com.cn/book/1535
7.算法基次算法基础课 快速排序 首先我们来确定它的底层逻辑 它采用的是分治的思想 将一长串的对比数据拆分成一个个小的部分 1.确定分界点 可以是任意一点 一般我们选用 a[l] a[r] a[(l+r)/2]这三种方式 2.我们确定了分界的值之后就将它 放到两边(这里我们优雅的用双指针的方法来实现确定一手 i和j 然后让它在https://www.acwing.com/blog/content/40015/
8.计算机算法基础计算机算法基础 作者:邹海明 出版社:华中工学院出版社 出版年:1985 计算机算法基础 作者:邹海明 ISBN:7560905528 出版社:华中理工大学出版社 出版年:1985 计算机算法基础 作者:宋晏 ISBN:9787302409250 出版社:清华大学出版社 出版年:2015 计算机算法基础 作者:沈孝钧 ISBN:9787111425953 出版社:机械工业出版社 https://www.las.ac.cn/front/book/detail?id=5f25dd1afcaaae03a34afe130505e23b
9.计算机算法基础(第三版)余祥宣PDF扫描版[12MB]电子书下载计算机算法基础围绕算法设计的基本方法,对计算机领域中许多常用的非数值算法作了精辟的描述,并分析了这些算法所需的时间和空间。全书共分11章,第1章系统地介绍了计算机算法所涉及的数学知识,第2章至第9章介绍了递归算法、分治法、贪心法、动态规划、基本检索与周游方法、回溯法以及分枝一限界法等基本设计方法,第10章https://www.jb51.net/books/262473.html
10.深度学习高手笔记卷1:基础算法本书通过扎实、详细的内容和清晰的结构,从算法理论、算法源码、实验结果等方面对深度学习算法进行分析和介绍。本书共三篇,第一篇主要介绍深度学习在计算机视觉方向的一些卷积神经网络,从基础骨干网络、轻量级 CNN、模型架构搜索 3 个方向展开,介绍计算机视觉方向的里程碑算法;第二篇主要介绍深度学习在自然语言处理方向的https://www.epubit.com/bookDetails?id=UB7d8623610d375
11.Python基础知识Python编程基础算法Python作为目前编程开发的主流语言之一,在企业中的应用范围越来越广,广阔的发展前景吸引了很多小伙伴想要入行Python,在学习Python时,一定要对基础技术知识有一个良好的了解,这样才会事半功倍,今天八维职业学校就和大家一起来看看Python编程中的基础算法,希望对各位学子有帮助。 https://www.bwie.com/jsgh/66.html
12.学算法需要的基础学算法需要的基础1.概率论与数理统计 2.线性代数 3.数值分析 4.统计学习 5.计算机科学 6.高等数学 7.计算机图形学 8.模式识别与机器学习 9.数据挖掘 10.深度学习?2022 Baidu |由 百度智能云 提供计算服务 | 使用百度前必读 | 文库协议 | 网站地图 | 百度营销 https://wenku.baidu.com/view/1c43e14f2179168884868762caaedd3383c4b5a0.html
13.中华人民共和国密码法–云南城市建设职业学院AES算法,是美国联邦政府在DES算法基础上研发的一种对称密码算法标准。RSA算法,1977年提出,基于大整数因子分解难题设计,是第一个投入使用,也是迄今为止应用最广泛的公钥密码算法,但当前已经很容易被计算机破解。ECC算法,即椭圆曲线密码算法,被国际公认为唯一成熟可替代RSA密码算法的公钥密码算法,具有资源占用少、运算效率https://www.yncjxy.com/baoweichu/falufagui/20964/
14.科学网—[转载]强化学习在资源优化领域的应用2.2 强化学习算法基础 根据智能体在与环境交互过程中具体学习的内容,可以把无须对环境进行建模(即model-free)的强化学习算法分为两大类:直接学习动作执行策略的策略优化算法(如REINFORCE)和通过学习一个值函数进而做出动作执行决策的值优化算法(如Q-learning)。 https://blog.sciencenet.cn/blog-3472670-1312677.html