演算法第二章上機實踐報告

2022-08-14 13:54:19 字數 865 閱讀 9036

1.實踐題目名稱:最大子列和問題

2.問題描述:

給定k個整數組成的序列,「連續子列」被定義為,其中 1。「最大子列和」則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。

本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下:

3.演算法描述:

將給定序列一分為二,分為左右兩個子串行,從中間元素向左邊開始查詢左端最大子串行和,向右邊開始查詢右端最大子串行和,在與橫跨中間元素的最大子串行和做比較,得出整個序列的最大子列和。

**如下:

4.演算法時間及空間複雜度分析(要有分析過程)

①分:遞迴將序列一分為二,時間複雜度為o(1)

②治:問題一分為二,原來的問題是t(n),現在是2t(n/2)

③合併:由於反覆遞迴呼叫,從最小的問題中求出值即做一次比較,一共需要比較n/2次,時間複雜度為o(n)

根據主定理,演算法的時間複雜度為o(nlogn),由於遞迴呼叫,空間複雜度為o(n)

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

在後續的題目中,求乙個有序陣列的最大數,也運用到類似的演算法,即求左端最大數,右端最大數,中間最大數,並進行比較得出整個陣列的最大數。首先運用遞迴切開陣列,然後用分治分別求值比較。

演算法第二章上機實踐報告

實踐題目名稱 找第k個小的數 問題描述 設計乙個平均時間為o n 的演算法,在n 1 n 1000 個無序的整數中找出第k小的數。演算法描述 就是先假設a left 為這個分界值x,然後排序。比較x是不是第k個如果是,返回這個值。如果不是比較一下x和a k 的大小,如果xa k 遞迴在x的右邊找 演...

演算法第二章上機實踐報告

7 1 最大子列和問題 20分 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資...

演算法第二章上機實踐報告

1,實踐題目名稱 最大子列和問題 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...