今天 , 开始学习算法 , 以这个列子解释复杂度对算法的影响
#include <stdio.h>
int main()
{
int i = 0;
int arr[8] = { -1,2,-3,4,-4,7,8,9 };
int j = 0;
int k = 0;
int sum = 0;
int max_sum = 0;
for( i = 0 ; i < 8 ; i++)
{
for( j = i ; j < 8 ; j++)
{
sum = 0;
for( k = i ; k <= j ; k++)
{
sum = sum + arr[k];
if( sum > max_sum )
{
max_sum = sum;
}
}
}
}
printf("%d",max_sum);
return 0;
}
时间复杂度为 T (n) = O(n^3)
#include <stdio.h>
int main()
{
int arr[8] = { -1,2,-3,4,-4,7,8,9 };
int i = 0;
int j = 0;
int k = 0;
int max_sum = 0;
int sum1 = 0;
for( i = 0 ; i < 8 ; i++)
{
for( j = i ; j < 8 ; j++)
{
sum1 = sum1 + arr[j];
if( i == 0 && j == 0 )
{
max_sum = arr[j];
}
else if( sum1 > max_sum )
{
max_sum = sum1;
}
}
sum1 = 0;
}
printf("%d",max_sum);
return 0;
}
时间复杂度为 T (n) = O(n^2)
#include <stdio.h>
int main()
{
int arr[8] = { -1,2,-3,4,-4,7,8,9 };
int i = 0;
int k = 0;
int max_sum = 0;
int sum = 0;
for( i = 0 ; i < 8 ; i++)
{
sum = sum + arr[i];
if( sum > max_sum )
{
max_sum = sum;
}
else if( sum < 0 )
{
sum = 0;
}
}
printf("%d\n",max_sum);
return 0;
}
时间复杂度为 T (n) = O(n)