标签:
算法是为求解一个问题需要遵循的,被清楚指定的简单指令的集合。对于一个问题,一旦某种算法给定并且被确定是正确的,那么重要的一步就是确定该算法将需要多少时间资源空间资源的问题。所以按我自己的话认为算法就是为解决程序花费更少的时间和更少空间的问题。
简单例子说明一下如何将一个程序的运行时间降低到更少。给定正数(可能有负的),求最大子序列的和。
例:对于输入-2,11,-4,13,-5,-2,求最大子序列的和。
1 /* 2 * 穷举式的尝试所有的可能,算法复杂度为O(N*N*N) 3 */ 4 public int maxSum1(int[] a) { 5 int maxSum = 0; 6 7 for (int i = 0; i < a.length; i++) { 8 for (int j = i; j < a.length; j++) { 9 int thisSum = 0; 10 11 for (int k = i; k <= j; k++) { 12 thisSum += a[k]; 13 14 if (thisSum > maxSum) { 15 maxSum = thisSum; 16 } 17 } 18 } 19 } 20 return maxSum; 21 }
1 /* 2 * 考虑实际情况下,算法复杂度为O(N*N) 3 */ 4 public int maxSum2(int[] a) { 5 int maxSum = 0; 6 7 for (int i = 0; i < a.length; i++) { 8 int thisSum = 0; 9 10 for (int j = i; j < a.length; j++) { 11 thisSum += a[j]; 12 13 if (thisSum > maxSum) { 14 maxSum = thisSum; 15 } 16 } 17 } 18 return maxSum; 19 }
标签:
原文地址:http://www.cnblogs.com/yoyohong/p/5645370.html