天天看點

一位數組中求最大子數字

首先,定義一個一位數組a[10]

在數組中,有正數也有負數,我采用累加的辦法,将數組從A1開始,A1加完之後再從A2開始

一直累加。每次累加後與之前的和比較,保留最大值,最後求出一個最大值

Tn=時間複雜度O(n*n)

int MaxSubSum1(int *arr,int len)

{

int i,j;

int MaxSum = 0;     //每次開始累加的起始位置的循環

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

int CurSum = 0;      //向後累加的循環

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

CurSum += arr[j];

if(CurSum > MaxSum)//對值進行比較最後保留最大值

MaxSum = CurSum; //将值賦予 MaxSum

}

return MaxSum;

這是一種正常的算法,對于比較容易解決,但是當數組長了就不是很好解決,而且時間複雜度是N*n