你要求的应该是两个数的最小公倍数吧,要是它们的公倍数的话,有无穷多个
1.
#include<stdio.h>
main()
{
int m,n,p;
scanf("%d,%d",&m,&n);
p = m*n;
while(n!=0) //求出它们的最大公约数
{
int r=m%n;
m=n;
n=r;
}
printf("MINGongBeiShu:%d\n",p/m); //最小公倍数=这两个数的乘积÷它们的最大公约数
}
其实不必要想上位元兄那样去理会它们的大小,这算法与它们的大小顺序是无关的,你可以上机运行一下,结果是对的,你可以举例子来分析一下,这对你的学习有很大的帮助!
2.
#include<stdio.h>
main()
{
int max,min,i;
int arr[10]; //定义数组,存储输入的那十个数
for(i=0;i<10;i++)
{
scanf("%d",arr[i]);
}
max=min=arr[0];
for(i=1;i<10;i++)
{
if(max<arr[i])
max=arr[i];
else if(min>arr[i])
min = arr[i];
else
continue;
}
printf("max = %d;\tmin = %d\n",max.min);
}
你上机运行一下,好像上一位的回答有错误!!
❷ 学数据结构的时候,那些算法设计可以上机实操出结果的吗
算法设计当然可以在上机出结果的
先学C语言,看数据结构的算法设计当然会方便很便(不过也看这个算法设计是用什么语言写的呀)
❸ 关于算法是时间复杂度,对数阶比指数阶效率高吗
时间复杂度
(1)时间频度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。算法的时间复杂度是指执行算法所需要的计算工作量。
(2)时间复杂度
在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n^2 3n 4与T(n)=4n^2 2n 1它们的频度不同,但时间复杂度相同,都为O(n^2)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n)(以2为底n的对数,下同),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
算法的时间性能分析
(1)算法耗费的时间和语句频度
一个算法所耗费的时间=算法中每条语句的执行时间之和
每条语句的执行时间=语句的执行次数(即频度(Frequency Count))×语句执行一次所需时间
算法转换为程序后,每条语句执行一次所需的时间取决于机器的指令性能、速度以及编译所产生的代码质量等难以确定的因素。
若要独立于机器的软、硬件系统来分析算法的时间耗费,则设每条语句执行一次所需的时间均是单位时间,一个算法的时间耗费就是该算法中所有语句的频度之和。
求两个n阶方阵的乘积 C=A×B,其算法如下:
# define n 100 // n 可根据需要定义,这里假定为100
void MatrixMultiply(int A[a],int B [n][n],int C[n][n])
{ //右边列为各语句的频度
int i ,j ,k;
(1) for(i=0; i
❹ 何为c++算法的时间性能
你问的时间性能应该是指时间复杂度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k), 指数阶O(2^n) 。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
❺ 数据结构的算法例子如何上机去验证
你好,对于数据结构初学者来说,一般都会觉得上机验证算法比较困难。因为大家有个共同的误区,认为书上的算法直接可以编译运行。
实际上,数据结构给的算法例子,很多是伪代码,是需要修改为实际可执行的代码才能编译通过并运行的。如果修改成语法上,逻辑上正确的,可编译运行的代码,就要考验你的编程功底了,而这一点就是初学者体会到的难点。
希望对你有帮助~
❻ 用类c语言描写的算法能直接在计算机上运行吗
要看是否符合语法规则啊。如果严格符合语法规则,当然可以直接运行。
❼ 如何使算法在计算机上运行
算法只是一种编程的思想。要把你算法的功能表现出来还需要使用工具:
运行环境
编程语言
对应的编译器
用编程语言翻译你的算法成编译器可以认得的语言
用编译器编译,也就是翻译成可以让运行环境可以认得的语言。
一般运行环境可以认得的语言就是机器语言。比如用vc编写的代码,编译出程序。
但有些时候不是的,比如用java语言写的代码,java编译器编译出的程序是不能直接给机器运行的,而是给java 虚拟机去解释成机器语言然后给机器执行
❽ 算法在什么东西上运行
算法是抽象的东西。简单说是计算机解决问题的方法。
算法不能运行,只能通过程序代码来实现、体现。
至于程序代码,在编辑器中编辑完成后,要经过编译器的编译,生产应用程序(exe文件)然后运行计算结果
算法每种编程语言都有,而每种编程语言都有不同的编译器。至于你用哪种就不得而知了。
❾ 关于算法时间复杂度分析的疑问
谁跟你说的分析时间复杂度是用比较次数来衡量的?
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度T(n)=O(f(n))
一般情况时间复杂度是以你算法中最复杂的那个循环来看的,
比如有个
for(i = 0;i < n;i ++)
{
for(j = 0;j < n;j ++)
{
...
}
}
后面不管他有多少个单独的
for(i = 0;i < n;i ++)
{
...
}
他的时间复杂度都是O(n2)
不会是O(n2) + O(n) + O(n) + O(2n)...这样的
❿ 用c语言描述的算法可以直接在计算机上运行吗
不可以
必须通过编译器编译成计算机语言才能运行