HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    与算法(算理与算法)

    发布时间:2023-04-19 03:45:59     稿源: 创意岭    阅读: 100        

    大家好!今天让创意岭的小编来大家介绍下关于与算法的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    与算法(算理与算法)

    一、关于算法与算理

    什么是算理?

    算理就是计算过程中的道理,是指计算过程中的思维方式,解决“为什么这样算”,这样算的道理是什么。算理一般由数学概念、运算规律、运算性质等构成。就是教师根据概念,性质,定义为依据对计算方法加以说明。如:小数乘法的算理就是积的变化规律,小数除法的算理就是商不变的规律。

    什么是算法?

    算法就是计算的方法,主要解决“怎样计算”的问题。通常是算理指导下的一些人为规定的操作步骤,解决如何算得方便、准确的问题。如:小数乘法的算法:先按照整数乘法算出积,再看因数中一共有几位小数就从积的右边数出几位点上小数点。

    整数(小数)加法:算法:把相同数位对齐列出竖式,再从个位加起,满十向前一位进一。算理:依据数的组成意义,推出相同计数单位(分数单位)的数才能相加减。算理也可以理解为加法交换律和结合律。整数(小数)减法:算法:相同数位对齐,从个位减起,哪一位不够减就从前一位退一,在本位上加10再减。

    算理:依据数的组成和意义概念,推出相同计数单位的数才能相加减。十进制计数法。

    算理与算法的关系是什么?

    算理是客观存在的规律,算法是人为规定的操作方法;算理为计算提供了正确的思维方式,保证了计算的合理性和正确性,算法为计算提供了快捷的操作方法,提高了计算的速度;算理是算法的理论依据,算法是算理的提炼和概括,它们是相辅相成的。教学中不可放弃任何一方面。

    在教学中如何处理算理和算法的关系?

    既要让学生知道怎么算,又要知道为什么要这样算,知其然又知其所以然,这是计算教学的根本。在教学时要让学生在感悟、理解算理的基础上生成、(创造)出算法,到最后掌握算法。

    一般情况下,一个单元的起始例题,是整个单元的基础和关键。要用足时间重点突破。使学生扎扎实实地理解算理,掌握算法。

    二、数据结构与算法——字符串匹配问题(KMP算法)

    KMP算法也是比较著名的模式匹配算法。是由 D.E.Knuth,J.H.Morrs VR.Pratt 发表的一个模式匹配算法。可以大大避免重复遍历的情况。

    如果使用暴风算法的话,前面五个字母完全相等,直到第六个字母 "f" "x" 不相等。如下图:

    T = “abcdex”

    j 123456

    模式串 abcdex

    next[j] 011111

    T = "abcabx"

    j 123456

    模式串T abcabx

    next[j] 011123

    T = "ababaaaba"

    j———————123456789

    模式串T——— ababaaaba

    next[j]————011234223

    T = "aaaaaaaab"

    j———————123456789

    模式串T——— aaaaaaaab

    next[j]————012345678

    next数组其实就是求解字符串要回溯的位置

    假设,主串S= “abcababca”;模式串T=“abcdex”,由以上分析得出next数组为011111,next数组意味着当主串与模式串不匹配时,都需要从第一个的位置重新比较。

    KMP算法也是有缺陷的,比如主串S=“aaaabcde”,模式串T= “aaaaax”。next的数组就是012345;

    当开始匹配时,当i= 5,j = 5时,我们发现字符"b"与字符“a”不相等,如上图,j = next[5] = 4;

    由于T串的第二、三、四、五位置的字符都与首位“a”相等,那么可以用首位next[1]的值去取代与它相等的后续字符的next[j],那么next数组为{0,0,0,0,0,5};

    在求解nextVal数组的5种情况

    三、数据结构与算法基础知识

    1.数据结构的逻辑结构

    (1)集合结构

    (2)线性结构(存在唯一的第一个元素与唯一的最后一个元素)(eg: 线性表、队列、栈、字符串、数组、链表)

    (3)树形结构(一对多)

    (4)图形结构(多对多)

    2.数据结构的物理(存储)结构

    (1).顺序存储结构(插入与删除低效因为要挪动其他元素的位置。但是遍历简单)

    (2).链式存储结构(插入与删除高效,但是遍历低效)

    3.大O表示法(注意大O表示法表达的是最坏的情况)

    规则:

    (1)用常数1取代其他所有的常数(注意常数0也当1算)(3 -> 1, O(1))

    (2) 只保留最高阶项(n^3+2n^2+5 ->n^3, O(n^3))

    (3) 若存在最高阶,省略与其想成的常数(2n^3 -> n^3, O(n^3))

    4. 时间复杂度类型

    (1)常数阶

    (2)线性阶

    (3)平方阶

    (4)对数阶

    (5)立方阶

    (6)nlog阶

    (7)指数阶(O(2^n)或O(n!), 往往会造成噩梦般的时间消耗)

    5. 空间复杂度(用大O表示法求解改算法的辅助空间即可,例如用于交换变量用的临时变量的数量)

    六. 顺序存储的线性表

    线性表结构特点:

    (1) 存在唯一一个的被称作”第一个”的数据元素;

    (2) 存在唯一一个的被称作”第二个”的数据元素;

    (3) 除了第一个元素以外,结构中的每个数据元素均有一个前驱;

    (4) 除了最后一个元素以外,结构中的每个数据元素均有一个后继。

    七. 链式存储的线性表(单链表)

    首元结点是链表中第一个值域不为空的结点。

    头结点是一个值域为空且处于首位的结点。

    首指针可指向首元结点也可指向头结点,但是如果指向头结点可以更加方便的处理单链表的插入和删除问题,不用再对首位做额外判断,并且指向头节点的指针永远不用变化。

    *注意一下单链表的前插法和尾插法。尾插法更符合逻辑

    四、19年3月二级C--数据结构与算法

    1.假设线性表的长度为n,则最坏情况下:

    冒泡排序: 需要经过n/2遍的从前往后扫描和n/2遍从后往前扫描,需要比较的次数为n(n-1)/2。总的时间复杂度为O(n的平方)。

    快速排序: 比较次数也是n(n-1)/2。总的时间复杂度为O(n的平方)。

    直接插入排序: 所需要比较的次数为n(n-1)/2。总的时间复杂度为O(n的平方)。

    希尔排序所需要比较的次数为O(n的1.5次方)。(时间复杂度小于以上三种)

    堆排序: 最坏情况下,其时间复杂度为O(nlogn)。(小于O(n的平方))。

    2.根据数据结构中各元素之间前后关系的复杂程度,一般数据结构分为两大类: 线性结构和非线性结构。

    如果一个非空的数据结构满足下列两个条件,①有且只有一个根结点 ②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。

    3.算法时间复杂度与空间复杂度没有关系。

    4.所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

    为了能够比较客观的反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所用的计算机程序设计语言,以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。

    5.同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。

    算法分析的目的在于选择合适算法和改进算法。

    6.堆排序在平均情况下的时间复杂度与最坏情况下的时间复杂度都是O(nlogn)。

    7.二叉链表: 以二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和第一个孩子下的一个兄弟结点。

      循环链表是链式存储结构,循环队列是线性存储结构。( 【×】循环链表是循环队列的链式存储结构)

      双向链表也叫双链表,是链表的一种,它的每个数据结点都有两个指针,分别指向直接后继和直接前驱,所以从双链表中的任意一个结点开始都可以很方便地访问它的前驱结点和后继结点。

    8.数据的逻辑结构由两个要素: 一是数据元素的集合,通常记为D。二是D上的关系,它反映了D中各元素之间的前后件关系,通常记为R。

    即一个数据结构可以表示成B=(D,R),其中B表示数据结构,为了反映D中各元素之间的前后件关系,一般用二元组来表示。例如,假如a与b是D中的两个数据,则二元组表示a是b的前件,b是a的后件。

      线性结构用图形表示更加直观。例如: R={(5,1),(7,9),(1,7),(9,3)},结构为: 5→1→7→9→3

    9.快速排序法是一种互换类的排序方法,但由于比冒泡排序的速度快,因此称为快速排序。

    其基本思想是从线性表中选择一个元素设为t,将线性表后面小于t的元素移到前面,而前面大于t的元素移到后面,结果就将线性表分成了两部分,t插入到分界线的位置处,这个过程称为线性表的分割。

      简单插入排序法,是指将无序序列中的各元素依次插入到已经有序的线性表中。

      冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换,逐步将线性表变为有序。

      后两种元素的移动过程中不会产生新的逆序。

    10.程序可作为算法的一种描述。

    11.为了降低算法的空间复杂度,要求算法尽量采用原地工作,所谓的原地工作是指执行算法时所使用的额外空间固定。

      一个算法的空间复杂度一般是指执行这个算法所需要的内存空间,一个算法所占用的存储空间包括程序所占的空间,输入的初始数据所占的空间以及算法执行过程中所需要的额外空间。

    12.能从任意一个结点开始没有重复的扫描到所有结点的数据结构是循环链表。

    13.循环队列是队列的一种存储结构

    14.算法的设计要求包括效率与低存储量,即要考虑算法的时间复杂度与空间复杂度。

      算法的复杂度包括时间复杂度和空间复杂度。

      时间复杂度: 是指执行算法所需要的计算工作量。

      空间复杂度: 一般是指执行这个算法所需要的内存空间。

    15.栈是一种特殊的线性表。链式结构把每一个存储结点分为数据域与指针域,带链的栈可以通过指针域的变化改变原有的栈的组织数据原则; 而顺序栈的栈底指针不变,栈顶指针改变。

    16.堆排序在最坏的情况下需要比较nlogn次。

      快速排序,在最坏情况下需要比较n(n-1)/2次。

      顺序查找,在最坏情况下需要比较n次。

      最坏情况下,二分查找需要log2n(小于n-1)

      在长度为n的顺序表中寻找最大项/最小项时,比较次数最少为1,最多为n-1。

    17.如果一个非空的数据结构满足下列两个条件,①有且只有一个根节点 ②每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称为非线性结构。

    18.带链栈空的条件是 top=bottom=NULL

    19.满二叉树也是完全二叉树,完全二叉树不一定是满二叉树。对于满二叉树和完全二叉树来说,可以按照程序进行顺序存储,不仅节省了空间,又能方便地确定每一个结点的父结点等于左右子结点的位置,但顺序存储结构对于一般的二叉树不适用。

    20.带链栈队头指针与队尾指针相同,且不为空时,队列元素个数为1; 若为空时,队列元素个数为0。

    带链栈的栈底指针是随栈的操作而动态变化的。

    21.二叉树的链式存储结构,也称为二叉链表。在二叉树中,由于每一个元素可以有两个后件,因此用于存储二叉树的存储结点的指针域有两个,所以二叉链表属于非线性结构。

    22.线性表由一组元素数据元素构成,各元素的数据类型必须相同,矩阵是一个比较复杂的线性表,线性表除了插入和删除运算之外,还可以查找,排序,分解,合并等。数组是长度固定的线性表。

    23.冒泡排序中,在互换两个相邻元素时,只能消除一个逆序; 快速排序及希尔排序中,一次交换可以消除多个逆序。

    24.二分法检索的效率比较高,设线性表有n个元素,则最多的比较次数为log2n,最少检索次数为1。

    25.循环链表的结构具有以下两个特点。一,在循环链表中,增加了一个表头结点,其数据域为任意或者根据需要来设置指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。二、循环链表中最后一个节点的指针域不是空,而是指向表头结点,即在循环链表中所有的结点指针构成一个环状链。

    26.二叉树的存储结构是非线性结构,而完全二叉树是特殊形态的二叉树。采用顺序存储的完全二叉树属于非线性结构。

    27.时间复杂度和计算机运行速度以及存储空间无关。

    算法的空间复杂度和存储结构无关。

    数据处理效率与数据的存储结构有关。

    28.线性表,向量,栈,队列都属于线性结构的顺序存储。

    29.循环队列是队列的存储结构。

      循环链表是另一种形式的念式存储结构。

      (✘循环链表是循环队列的链式存储结构。✘)

    30.完全二叉树的总结点为奇数时,叶子结点是总结点加一再除以二。

    31.在实际处理中,可以用一位数组来存储堆序列中的元素,也可以用完全二叉树来直观的表示堆的结构。在用完全二叉树表示堆时,树中所有非叶子结点值均不小于其左,右子树的根结点值,因为堆顶元素必须为序列的n个元素的最大项,因此其中序并不是有序序列。

      多重链表指表中每个结点由两个或两个以上的指针域的链表。如果一个非空的数据结构满足下列两个条件,①有且只有一个根结点,②每个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,所以多重链表不一定是非线性结构。

      在计算机中二叉树通常采用链式存储结构,对于满二叉树和完全二叉树来说,可以按层次进行顺序存储。

      排序二叉树的中序遍历序列是有序序列。

    32.对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。

    33.在线性表中寻找最大项时,平均情况下和最坏情况下比较次数都是n-1。

    34.在长度为n的顺序表中查找一 个元素, 假没需要查找的元素有一半的机会在表中,并且如果元素在表中,则出现在表中每个位置上的可能性是相

    同的。则在平均情况下需要比较的次数大约为_

    A.3n/4    B.n    C.n/2  D.n/4

    本题的考查知识点是顺序表的存储结构。

    因为需要查找的元素有一半机会在表中,所以二分之一的情况下平均比较次数为n/2,另二分之一的情况下平均比较次数为n。总的平均比较次数为(n/2+n) /2-3n/4。

    故本题答案为A。

    35.设数据结构B=(D, R),其中

    D={a,b,c,d,e,f}

    R={(a,b),(b,c),(c,d),(d,e),(e,f),(f,a)}该数据结构为

    A.线性结构    B.循环队列

    C.循环链表    D.非线性结构

    本题的考查知识点是数据结构。

    如果一个非控的数据结构满足下列两个条件: 1) 有且只有一个根节点; 2) 每一一个结点最多有一一个前件,也最多有一一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。

    数据结构B=(D, R)中, 每一个结点均有一个前件,不符合“有且只有一个根节点”的条件,所以为非线性结构。故本题答案选D。

    36.某带链的队列初始状态为front=rear=NULL。经过一系列正常的入队与退队操作后,front=rear=10。 该队列中的元素个数为_

    A.1    B.0    C.1或0    D.不确定

    本题的考查知识点是带链队列。

    在初始状态为front=rear=NULL的带链队列入队时,如果插入的结点既是队首结点又是队尾结点,则rear和front同时指向这个结点;否则在循环队列的队尾加入一一个新元素,rear指向新增结点的数据域,rear+1, front不变。 退队时,在循环队列的排头位置退出一个元素并赋给指定的变量,front指向第二个结点的数据域,front+1, rear不变。当front=rear=10时, front和rear同时指向这个唯一 元素,所以该队列中的元素个数为1。

    故本题答案为A。

    37.若二叉树没有叶子结点,则为空二叉树。

    38.某带链栈的初始状态为top=bottom=NULL, 经过一系列正 常的入栈与退栈操作后,top=10, bottom=20。 该栈中的元素个数为_____。

    A.不确定    B. 10    C.1    D.0

    本题考查的知识点是栈。

    带链的栈是具有栈属性的链表,线性链表的存储单元是不连续的,为把存储空间中一-些离散的空闲存 储结点利用起来,把所有空闲的结点组织成一个带链的栈,称为可利用栈。

    线性链表执行删除操作运算时, 被删除的结点可以”回收到可利用栈,对应于可利用栈的入栈运算;线性链表执行插入运算时,需要一个新的结点,可以在可利用栈中取栈顶结点,对应于可利用栈的退栈运算。

    可利用栈的入栈运算和退栈运算只需要改动top指针即可。因为是不连续的存储空间,所以top指针将不会有规律地连续变化,因此无法据此判断栈中的元素个数。

    所以本题答案为A。

    以上就是关于与算法相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    人工智能原理与算法(人工智能原理与算法张文生)

    人工智能模型与算法(人工智能研究方法)

    与算法(算理与算法)

    伊贺忍者餐饮品牌设计图(伊贺忍者餐饮品牌设计图片)

    饭圈素材无水印(饭圈素材无水印图片)