最大子序列之和(C语言)

第三天记录
本来今天是想学一下堆排序,虽然明白了算法的大概流程,可是代码自己写不出来,如果哪天我回来看看,记得把堆排序给补上。
在这里插入图片描述
所以今天记录一下以前学的的一个算法,计算最大子序列的算法;
也算是复习一下;
在这里插入图片描述
先来说一下什么是最大子序列;
打个比方
如果有一个序列是1,-5, 6 , 2, 3;
那么它的最大子序列之和为6+2+3=11;
可以看出规律的吧;
在这里插入图片描述
就是连续的子集!加起来!最大!
多么简单的定义…
但是吧,实现起来的话,有很多方法,我看书的时候给了好像有三四个呢!
其中有个递归的算法着实看了好久没看懂就放弃了;
在这里插入图片描述
那这里呢,就不管什么递归还是嵌套循环
介绍一个简单的算法,加起来没有几行

看代码

int sum(const int a[],int N){
int Thisnum,Maxnum,j;
Thisnum=Maxnum=0;
for(j=0;j<N;j++){
    Thisnum+=a[j];
    if(Thisnum>Maxnum){
        Maxnum=Thisnum;
    }
    else if(Thisnum<0){
        Thisnum=0;
          }
}
return Maxnum;
}

emmmmmm
你说就这么两行,就这样吧,代码意思清晰明了,变量也不多;
就这样吧

今天就这样结束
呜呜呜呜
附加一下测试结果
在这里插入图片描述
呜呜呜
没弄出来堆排序
真悲伤
今天不点赞了,哎,end!

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/105887832