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

2022-08-17 06:24:08 字數 1080 閱讀 4434

#includeusing

namespace

std;

int maxsum(int a,int l,int

r)

else

}int s2=0

;

int rights=0

;

for(int i=mid+1;i<=r;i++)

}sum=s2+s1;

if(sumif(sumreturn

sum;

} }int maxsum(int n,int *a)

intmain()

cout

}

以求最大子列和為例

一,實踐題目名稱:最大子列和問題

二,問題描述:

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

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

資料1:與樣例等價,測試基本正確性;

資料2:102個隨機整數;

資料3:103個隨機整數;

資料4:104個隨機整數;

資料5:105個隨機整數;

三,演算法描述:

把陣列分兩半,求出左邊最大子段和,右邊最大子段和,以及跨兩邊的最大子段和,三者比較,選出最大的即可。

四,演算法時間複雜度和空間複雜度分析

時間複雜度:假設問題規模為n問題被劃分為兩個子問題,2t(n/2);合併子問題,o(n), 所以 t(n)=2t(n/2)+o(n),則時間複雜度為o(nlogn)

空間複雜度:老師,我不會分析...

五,心得體會

對分治法思想的理解更加深入,運用更加熟練。相比最暴力最傳統的方法(所有欄位和都求出來),分治法避免了重複的計算,提高了效率。

實驗課那天,按照書上的**敲出來,**通過了,以為自己懂了,但其實當老師提問時,又回答不清晰。

只有自己理解了才可以真正的掌握知識。

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

實踐題目名稱 找第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。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...