由一段小程序看算法复杂度

今天被要求写一段程序,题目如下; 已知过去四周内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。
   不同的实现方式,差距很大。。。

   呵呵,多想想,办法总比困难多!

原文地址:https://www.cnblogs.com/dragonsuc/p/4335647.html