由一段小程序看算法复杂度
今天被要求写一段程序,题目如下; 已知过去四周内20个交易日天内黄金的价格,求过去20天内最大差值?
a[20]={2,5,1,6,7,9,10,18...1}
我当时想的是差值,肯定是两天交易日之间的差值,第1天与第2天之间的差值,第2天与第3天之间的差值,第一天与第三天之间的差值,他们之间的最大值??
于是,很有自信地写了:
int a[20]={2,5,1,6,7,9,10,18...1};
int b[19]={0};
int max=0;
for(int m=1;m<20;m++)
{
int tempmax=0;
//存储差值数据
for(int n=0;n<19;n++)
{
b[n]=0;
}
//计算差值
for(int i=m;i<m;m++)
{
b[i]=a[i]-a[i-1];
}
//求差值中最大值
for(int n=0;n<19;n++)
{
if(b[n]>tempmax)
{
tempmax=b[n];
}
}
if(tempmax>max)
{
max=tempmax;
}
}
两天之差,我的算法复杂度n*(n-1)*(n-2)**1;
同学们,我的代码写得对吗?这代码写得多好呀!!我很得意。。
精彩时刻就要来了,我先插播一则广告。。
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com/_d4.htm);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
最好的电力模型检测工具、最好的电力通讯测试工具尽在(http://www.mms61850.com);
我要的是任意两天之间的最大差值,不一定要两天之间差值,我们不要两天之间的差值,把这个弯转过来,好办了。
我得到最大值与最小值,那么他们之间的差值是不是任意两天的最大差值呢??
1 int a[20]={2,5,1,6,7,9,10,18...1}; 2 //最大值 3 int tempmax=a[0]; 4 //最小值 5 int tempmin=a[0]; 6 int max; 7 for(int m=1;m<20;m++) 8 { 9 if(a[m]>tempmax) 10 { 11 tempmax=a[m]; 12 } 13 else if(a[m]<tempmin) 14 { 15 tempmin=a[m]; 16 } 17 } 18 //结果就算我们需要的 19 max= tempmax-tempmin;
算法复杂度为n。
不同的实现方式,差距很大。。。
呵呵,多想想,办法总比困难多!

浙公网安备 33010602011771号