最大子数组 - 工作效率

设计思路:

用一个clock()函数记录程序运行的时间,以此来测试工作效率

源代码:

#include<iostream>

 

#include<ctime>

 

#define N 2000

 

 

 

using namespace std;

 

 

 

void main()

 

{

 

         int a[N];              //整数数组

 

         int f;                 //数值范围

 

         int i,j,k;             //控制循环变量

 

         int sum,max;      //和与最大值

 

         int m,n;               //记录子数组

 

         clock_t start, end;    //记录开始和结束的时间

 

 

 

         cout<<"请输入数值范围:";

 

         cin>>f;

 

 

 

         start = clock();

 

 

 

         srand((unsigned) time(NULL));

 

         for (i=0;i<N;i++)

 

         {

 

                   a[i]=(rand()%2?-1:1)*rand()%f;

 

                   cout<<a[i]<<"   ";

 

         }

 

         cout<<endl;

 

         max = a[0];

 

 

 

         for (i=0;i<N;i++)

 

         {

 

                   for (j=0;j<=i;j++)

 

                   {

 

                            sum=0;

 

                            for (k=j;k<=i;k++)

 

                                     sum=sum+a[k];

 

                            if (sum>max)

 

                            {

 

                                     max=sum;

 

                                     m=j;

 

                                     n=i;

 

                            }

 

                   }

 

         }

 

         end = clock();

 

 

 

         cout << "运行时间为:" << double((end - start))/1000 << " 秒" << endl;

 

 

 

         cout<<"子数组的最大值为:"<<max<<endl;

 

         cout<<"子数组是第"<<m+1<<"个数,到第"<<n+1<<"个数。"<<endl;

 

         cout<<"子数组是:";

 

         for (i=m;i<=n;i++)

 

         {

 

                   cout<<a[i]<<"  ";

 

         }

 

         cout<<endl;

 

 

 

}

 

运行截图:

数组大小500

时间:0.458

数组大小:1000

时间:1.813

数组大小:2000

时间:9.334

数组大小:5000

时间:131.509

posted on 2015-04-02 22:14  温柔的心  阅读(153)  评论(1编辑  收藏  举报

导航