码迷,mamicode.com
首页 > 编程语言 > 详细

最大子数组-工作效率

时间:2015-04-09 23:25:14      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<iostream>
 2 #include<ctime>
 3 #define N 2000          //宏定义          
 4 using namespace std;
 5 void main()
 6 
 7 {
 8     int a[N];              //整数数组
 9     int f;                 //数值范围
10     int i, j, k;             //控制循环变量
11     int sum, max;      //和与最大值
12     int m, n;               //记录子数组
13     clock_t start, end;    //记录开始和结束的时间
14     cout << "请输入数值范围:";
15     cin >> f;
16     start = clock();          // 把现在系统的时间调用赋值给start
17     srand((unsigned)time(NULL));         /*初始化随机数种子用的 
18                                          没有这句代码 
19                                          产生的随机数应该是相同的加上这句代码  
20                                          产生的随机数是随机的*/
21     for (i = 0; i<N; i++)             //控制循环,
22     {
23         a[i] = (rand() % 2 ? -1 : 1)*rand() % f;         //产生随机数
24         cout << a[i] << "   ";       //输出一维数组
25     }
26     cout << endl;
27     max = a[0];          //先把数组中的第一个数作为最大值
28     //以下是进行比较出最大值
29     for (i = 0; i<N; i++)
30     {
31         for (j = 0; j <= i; j++)
32         {
33             sum = 0;       //初始化字数组的和
34             for (k = j; k <= i; k++)   //循环变量
35                 sum = sum + a[k];    
36             if (sum>max)
37             {
38                 max = sum;        //更新最大值:从第一子数组的和加下一个数成为新的子数组的和,比较最大值
39                 m = j;        
40                 n = i;     //记录不了循环里的i,j。
41             }
42         }
43     }
44     end = clock();        //结束的时间
45     cout << "运行时间为:" << double((end - start)) / 1000 << "" << endl;  //运行时间
46     cout << "子数组和的最大值为:" << max << endl;
47     cout << "子数组是第" << m + 1 << "个数,到第" << n + 1 << "个数。" << endl;
48     cout << "子数组是:";
49     for (i = m; i <= n; i++)
50     {
51         cout << a[i] << "  ";      
52     }
53     cout << endl;
54 }

 

实验截图:

数组大小:5000

运行时间:57.202s

技术分享


设计思路:先宏定义数组的运算量后,输入数组的取值范围,从定义的第一个子数组开始比较子数组的和找出最大值,并记录开始和结束的时间。

实现时间流程:星期三(4月8日)

     
事件 时间段 时间
设计思路 3:00-4:30 1h30m
网上找例子 4:30-5:00 30m
解释语句 6:00-8:00 2h
总结 8:00-8:30

30m

总结:有什么不会的,我应该学会问别人,查资料,不能总是守着电脑发呆了。而且努力把看过的知识记住才行。

 

最大子数组-工作效率

标签:

原文地址:http://www.cnblogs.com/helloalbert/p/4412162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!