导航:首页 > 源码编译 > 多个算法解决同一个问题

多个算法解决同一个问题

发布时间:2025-01-31 07:19:31

㈠ 什么是算法

一、什么是算法
算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。时间复杂度用“O(数量级)”来表示,称为“阶”。常见的时间复杂度有: O(1)常数阶;O(log2n)对数阶;O(n)线性阶;O(n2)平方阶。
算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
[font class="Apple-style-span" style="font-weight: bold;" id="bks_etfhxykd"]算法 Algorithm [/font]
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。
一个算法应该具有以下五个重要的特征:
1、有穷性: 一个算法必须保证执行有限步之后结束;
2、确切性: 算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
算法的设计要求
1)正确性(Correctness)
有4个层次:
A.程序不含语法错误;
B.程序对几组输入数据能够得出满足规格要求的结果;
C.程序对精心选择的、典型的、苛刻的、带有刁难性的几组输入数据能够得出满足规格要求的结果;
D.程序对一切合法的输入数据都能产生满足规格要求的结果。
2)可读性(Readability)
算法的第一目的是为了阅读和交流;
可读性有助于对算法的理解;
可读性有助于对算法的调试和修改。
3)高效率与低存储量
处理速度快;存储容量小
时间和空间是矛盾的、实际问题的求解往往是求得时间和空间的统一、折中。
算法的描述 算法的描述方式(常用的)
算法描述 自然语言
流程图 特定的表示算法的图形符号
伪语言 包括程序设计语言的三大基本结构及自然语言的一种语言
类语言 类似高级语言的语言,例如,类PASCAL、类C语言。
算法的评价 算法评价的标准:时间复杂度和空间复杂度。
1)时间复杂度 指在计算机上运行该算法所花费的时间。用“O(数量级)”来表示,称为“阶”。
常见的时间复杂度有: O(1)常数阶;O(logn)对数阶;O(n)线性阶;O(n^2)平方阶
2)空间复杂度 指算法在计算机上运行所占用的存储空间。度量同时间复杂度。
时间复杂度举例
(a) X:=X+1 ; O(1)
(b) FOR I:=1 TO n DO
X:= X+1; O(n)
(c) FOR I:= 1 TO n DO
FOR J:= 1 TO n DO
X:= X+1; O(n^2)
“算法”一词最早来自公元 9世纪 波斯数学家比阿勒·霍瓦里松的一本影响深远的着作《代数对话录》。20世纪的 英国 数学家 图灵 提出了着名的图灵论点,并抽象出了一台机器,这台机器被我们称之为 图灵机 。图灵的思想对算法的发展起到了重要的作用。
算法是 计算机 处理信息的本质,因为 计算机程序 本质上是一个算法,告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。 一般地,当算法在处理信息时,数据会从输入设备读取,写入输出设备,可能保存起来以供以后使用。
这是算法的一个简单的例子。
我们有一串随机数列。我们的目的是找到这个数列中最大的数。如果将数列中的每一个数字看成是一颗豆子的大小 可以将下面的算法形象地称为“捡豆子”:
首先将第一颗豆子(数列中的第一个数字)放入口袋中。
从第二颗豆子开始检查,直到最后一颗豆子。如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先的豆子。 最后口袋中的豆子就是所有的豆子中最大的一颗。
下面是一个形式算法,用近似于 编程语言 的 伪代码 表示
给定:一个数列“list",以及数列的长度"length(list)" largest = list[1] for counter = 2 to length(list): if list[counter] > largest: largest = list[counter] print largest
符号说明:
= 用于表示赋值。即:右边的值被赋予给左边的变量。
List[counter] 用于表示数列中的第 counter 项。例如:如果 counter 的值是5,那么 List[counter] 表示数列中的第5项。
<= 用于表示“小于或等于”。

㈡ 解决某问题有三种算法,复杂性分别为……问在同样时间内可处理问题的大小,结果怎么来的求步骤。如图

S1速度和规模成正比例线性关系,很好理解
S2换个说法:当计算规模增大到多少时计算时间变为原来的10倍,那么对于时间复杂度是N²的算法来说,时间的增长幅度是计算规模增长幅度的平方,假设规模到K的时候,时间增长10倍,那么就有(K平方/S2平方)=10 得 k/s2=√10 的k=3.16*S2
S3: 对于₂ⁿ的时间复杂度来说,同样假设规模到K的时候,时间增长10倍,那么就有(2的K次方/2的S3次方)=10 得k=s3+log₂10=S3+3.32

㈢ 对于同一个问题可采用不同的算法去解决,但不同的算法通常具有相同的效率这句话错在哪 急!

不同的算法不会有相同的效率。
就比如11x12=132
第一种算法,两边一拉中间相加。像左1 右2 中间1+2=3
再举个例子11x55 605
第二种算法,归整零相加。像10x12+12

㈣ 快速排序方法的时间复杂度为O(n^2)=n(n-1)/2.

1)对于你的问题简单解释如下:
理论计算机研究中,衡量算法一般从两个方面分析:时间复杂度和空间复杂度。空间复杂度跟时间复杂度是类似的,下面简单解释一下时间复杂度:返芦察对于一个数据规模为n的问题,解决该问题的算法所用时间可以用含有n的函数T(n)来表示。对于绝大多数情况,我们只需要了解算法的一般性能而不考虑细节,也就是说,我们只关心函数T(n)的表达式的形式,而不关心表达式的常数系数等与数据规模没有关系的量值。对于函数T(n),我们又进一步将它简化为O(n),即只考虑算法平均运行时间的“瓶颈”,也就是T(n)表达式中,关于变量n增长最快的哪一项。比如下面的代码:
for(int i=1; i<=n*2; i++)
for(int j=1; j<=n; j++)
// do something here
那么这个算法的时间复杂度就是O(n^2),因为它有两层循环,每层循环的数据哗消规模都是n。注意第一层循环(外循环)要迭代n*2次,则实际上T(n)=2*n*n,而对于O(n)来说,我们忽略了常数2,只保留了n^2。这就是大O记法的一个概括,并不精确。
对于时间复杂度的更精确、深入的解释,可以自己查阅《算法导论》第一章。

2)更正你的问题:快速排序算法的时间复杂度应该为O(n lg n)。注意三种时间复杂度符号表示的不同意义!英文字母O代表的是平均运行时间,因此对于快速排序来说应该是O(n lg n)。而使用下界函数Omega或者上界函数Theta则分别表示算法运行的最快和最慢漏茄时间。对于未使用随机化的快速排序,理论上可以证明,存在某一方法构造出一组数据使快速排序“退化”成平方复杂度算法即Theta(n^2)。但是对于其O(n)表示法应该为O(n^2)。

㈤ n个不同的物品,分成M堆,每堆至少一个。问有多少种分法,求高效率的算法。

在n个物体中,先选出m个物体,每一堆放一个,这样有A(m)(n)=n*(n-1)*....*(n-m+1)种情况,然后其余的物品随便放,有m^(n-m)种情况,两者相乘就是答案

㈥ 计算机同一个问题只能用一个算法对吗

不是。
每个问题都有多个算法。只是算法是泛意的,并不是一定是计算机上可以运行的。如果可以在计算机上运行的,都是可以用数学建模的,那么数学模型出来了,算法也就有了。算法有了,具体用什么语言就看楼主自己了,可以写成标准C,也可以用C++实现,也可以用JAVA实现,比如说排序,任何一种计算机语言都能实现。

阅读全文

与多个算法解决同一个问题相关的资料

热点内容
明日之后安卓太卡怎么办 浏览:502
如何使用命令方块找到村庄 浏览:766
泛函压缩映像原理 浏览:521
win10清除文件夹浏览记录 浏览:964
如何查看服务器域中所有服务 浏览:384
学mastercam91编程要多久 浏览:999
如何查服务器地址和端口 浏览:909
教学云平台app怎么下载 浏览:389
单片机510教学视频 浏览:624
陕西信合app怎么查看自己的存款 浏览:663
风冷冰箱有压缩机 浏览:274
android实现wifi连接wifi 浏览:669
飞猪app怎么帮别人值机 浏览:924
笔记本开我的世界服务器地址 浏览:546
怎样隐藏bat命令 浏览:127
android开发创意 浏览:138
京剧猫为什么进不去服务器 浏览:784
怎么自己免费制作一个手机app 浏览:582
python同时迭代两个变量 浏览:740
好分数app家长版怎么删除孩子 浏览:426