由一段小程式看演算法複雜度

長風破浪發表於2015-03-13

今天被要求寫一段程式,題目如下; 已知過去四周內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。
   不同的實現方式,差距很大。。。

   呵呵,多想想,辦法總比困難多!

相關文章