1. 程式人生 > >演算法第三章上機實驗報告

演算法第三章上機實驗報告

1.實踐題目

7-2 最大子段和

2.問題描述

給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時,定義子段和為0。

要求演算法的時間複雜度為O(n)。

3.演算法描述

首先將資料儲存到一個數組內,然後建立一個迴圈來遍歷這些陣列,定義一個sum來儲存和,定義一個max來儲存最大值,對於每次遍歷的結果x,如果sum為負,則將sum的值更改為x,並與max做對比,若比max大則將sum的值賦予max,否則不做處理;如果sum為正數,則sum加上x的值並與max做對比,如果比max大則sum的值賦予max,否則不做處理。最後的max即我們所要求的值。

4.演算法時間及空間複雜度分析

時間複雜度:只有一次遍歷一維陣列,為O(n)

空間複雜度:只需要一維陣列的儲存空間O(n)

5.心得體會(對本次實踐收穫及疑惑進行總結)

要注意如果全部都為負數的情況。