zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和(升级版)

    设计思路

    运用clock()函数来计算运行程序花了多少时间。运用宏定义来控制数组的长度。

    源程序代码

    #include <iostream>

    #include <cstdlib>

    #include <ctime>

    using namespace std;

    #define N 10000

     

    void main()

    {

         clock_t start, finish;

         int a[N],b,c,d=0,i,j,k,t=-100,o=-100,x,y;

         double Time;

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

         cin>>b>>c;

         cout<<"生成数组为:"<<endl;

         srand(unsigned(time(0)));

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

         {

             a[i]=rand()%(c-b+1)+b;

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

         }

         start = clock();

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

         {

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

             {

                  d=0;

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

                  {

                       d=d+a[k];

                  }

                  if (d>t) {t=d;x=i;y=j;}

             }

             if (t>o) o=t;

         }

         finish = clock();

         Time=finish-start;

         Time=Time/1000;

         cout<<endl<<"程序执行时间:(秒)"<<Time;

         cout<<endl<<"最大子数组的和:"<<endl;

         for (i=x;i<=y;i++)

         {

             if (a[i]>=0)

             {

                  cout<<a[i];

             }

             else cout<<"("<<a[i]<<")";

             if (i!=y) cout<<"+";

             else cout<<"=";

         }

         cout<<o<<endl;

    }

    运行结果截图

    下面我们来测试一下对于大型数组的工作效率

    1000个数的数组程序执行时间0.058秒

    2000个数的数组程序执行时间0.474秒

    5000个数的数组程序执行时间6.956秒

    8000个数的数组程序执行时间28.582秒

    10000个数的数组程序执行时间55.213秒

    测试结果

    由于时间复杂度较高,10000个数的数组就有将近一分钟的等待时间,由此可见低时间复杂度的程序在处理大型数据时更加具有价值。

  • 相关阅读:
    sql练手
    简单工厂模式和抽象工厂模式的区别:面向接口编程
    UML中聚合和组合的关系(笔记)
    如何修改SQL Server 2005服务器名称 (装载)
    .NET 图片处理剪裁
    sql server 中的汉字转化为拼音
    sql server while, case,if..else ... try catch ..对象
    String 和 StringBuilder 的相同点和不同点
    sql 折分字符串并修改数据库表中数据
    SQL Server 与 Excel,Access 数据表的导入导出(注:参照博园.NET大观)
  • 原文地址:https://www.cnblogs.com/BUANG/p/4375967.html
Copyright © 2011-2022 走看看