算法功能
① 数据结构顺序表问题 指出算法的功能
图一:
第1个for循环找出该顺序表中最大值的下标,保存到j中。
第2个for循环把j后面的元素依次向前移动,并令顺序表的长度减1。
该算法功能:删除该顺序表中值最大的元素。
图二:
第1个for循环找出该顺序表中最后一个最小值的下标,保存到j中。
第2个for循环把j以及其后的元素依次向后移动,相当于把j的位置空出来,然后把第二个参数x插入到j的位置。并令顺序表的长度加1。
该算法功能:查找该顺序表中最后一个值最小的元素下标,然后把新元素x插入到该下标处,该位置及其后的原有元素整体向后移动一个位置。
② 简述以下算法的功能。
第一个算法是把无头结点单链表的第一个节点变到最后一个,使第二个节点变为头结点,原来的头结点变为最后一个。
第二个算法是把原来的单循环链表的一部分元素取出来,具体说就是从pa到pb前一个节点(包括pa而不包括pb)取出来,组成新的单循环链表。
③ 程序员学算法到底有什么用
算法是编程的基础,可以提升自己的逻辑能力,好的算法可以使编程更简单,减少冗余,用最短的代码实现功能,学好算法是很有必要的
算法是计算机的灵魂,是解决所有问题的根源,所以计算机与数学关系非常密切。
程序是算法加编程语言。其中,编程语言是很多程序员都熟知的。但说到算法部分程序员觉得跟自己关系不大。实际上,所有的程序都要用到算法。下面举几个算法的例子帮您理解一下算法的作用。
HelloWorld里的算法
学过编程的人,接触到的第一个程序大概都是着名的“Helloworld”了。这么简单的程序会有算法吗?当然有啦,请思考一下计算机是只认识数字的,怎么让它能识别文字呢?聪明的人类给每一个文字都制定了一个编码,配合数据类型的定义,计算机就能识别文字了。这种编码的方式就是一种算法了。您在键盘上输入文字本身就是一种算法的实现。英文还好就一两百个字母数字和符号。汉语博大精深有几万个字符,用101个按键组合来体现所有的文字这本身就是一种了不起的算法。
经典的算法-割圆术
割圆术跟程序的关系不大,但它却凝聚了编程的思想。我们知道所谓程序运算是由四则运算加上逻辑运算组成的。割圆术正是反复使用用了这些基本运算,经多次循环不断接近圆周率的。这个方法在算法中叫递推法。在只能用算筹的年代,就能想到这么时尚的方法,我不得不说老祖宗真的很聪明。从另一个角度上说,哪亮氏算法其实是超越了编程的一种思想。
一个关于算法的故事
这个故事有点悲伤。我们知道法律规定一个人去逝后,他的遗产要由直系亲属继承。有这样一个家庭夫妇二人和一个孩子。有一天丈夫带着孩子二人坐飞机旅行,不幸的是飞机坠毁了二个人都遇难了。现在出现了一个遗产继承的问题。
丈夫的父母都健在,如果丈夫先于孩子去世,那么按照法律他的遗产要由父母妻子和孩子四人继承,每人分得四分之一。之后孩子去世,妻子将继承孩子的全部财产。结果是父母每人分得四分之一,而妻子一人独得二分之一。
如果孩子先于丈夫去世,则结局就是父母和妻子每人得三分之一。
到底该怎么分呢?没人能知道,因为谁都没有办法搞清楚丈夫和孩子哪个先去世。这说明了前面那个关于继承的法律有点问题。这个问题是一个关于时间的算法问题。这种现象在互联网的世界里很普遍,很多人都在发信息,但互联网不能保证先发的信息就能先到。因此,必须要设计出算法来解决这种时间上的冲突。
我们可以把计算机程序想象成用数字去模拟现实世界,算法则对应了现实世界中的各种规则。不李散懂得算法,我们便无法确定写出来的程序能否满足需求。
很高兴回答您提出的,程序员学好算法到底有什么用?
1、首先算法学好的话,不论对你思考问题的方式还是对你编程的思维都会键拍有很大的好处。
2、编程算法只是算法的一种表达形式,还可以用表格或流程图来表达算法。
3、各种算法在不同领域扮演不通角色,本质上没有区别,一通百通。
4、一些基础算法的话,没必要找资料书籍,也没有太多要求,随便在网上搜索一下,就能找到很多详细的资料。
其实,一般初级甚至中级程序员在日常开发中是用不了算法的,要么接触不到,要么别人帮你封装好了,你可以用现成的
但是时间一长,你就会发现不会算法,就很难变得更加优秀,你会发现优秀框架的源码,部分是需要用到算法,你不懂,有些存储原理,也用到算法,用到这些算法,你的代码执行的效率更高,这个时候你就需要去了解这些东西,否则你就很难再上一层楼
千万不要觉得算法不重要,其实这个是一种宝贵财富,在日常的开发中,对你有潜移默化的影响,所以,想成为一个优秀的程序员,算法数据结构是必不可少学的,一起加油学习算法吧
④ 算法功能
算法不同,功能都是不相同的。
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
一个算法应该具有以下七个重要的特征和功能:
1、有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止
2、确切性(Definiteness)
算法的每一步骤必须有确切的定义;
3、输入项(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4、输出项(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);
6、
高效性(High
efficiency)
执行速度快,占用资源少;
7、
健壮性(Robustness)
对数据响应正确。
⑤ 什么是算法,它的五大特性是什么,算法和程序的关系是什么
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
一个算法应该具有以下五个重要的特征:
有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性(Definiteness)
算法的每一步骤必须有确切的定义;
输入项(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
算法和程序的关系是:
算法就是程序的灵魂,一个需要实现特定功能的程序,实现它的算法可以有很多种,所以算法的优劣决定着程序的好坏。
程序就是遵循一定规则的、为完成指定工作而编写的代码。有一个经典的等式阐明了什么叫程序:程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境 。
⑥ 算法的基本概念和特征
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
一、数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1.算术运算:加减乘除等运算。
2.逻辑运算:或、且、非等运算。
3.关系运算:大于、小于、等于、不等于等运算。
4.数据传输:输入、输出、赋值等运算。
二、算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。