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

2022-08-02 18:45:16 字數 596 閱讀 1386

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

2.問題描述

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

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

輸入第1行給出正整數k (≤);第2行給出k個整數,其間以空格分隔。

在一行中輸出最大子列和。如果序列中所有整數皆為負數,則輸出0。

3.演算法描述:主要的思想是利用分治法,將原問題劃分為兩個子問題,最終的最大子問題則可以劃分為左中右三個區間,其中中間那個區間是從原問題的中點出發向兩邊發散,不斷尋找最大子列,而左右兩邊則又可以看成是乙個原問題,然後通過不斷遞迴求解,而最大連續子列和就是遞迴過程所求得的子列的最大值

5.演算法時間複雜度分析:將原問題一分為二,知演算法的分個步驟耗時為o(1),合併步驟耗時為2t(n/2),由公式可得用過共耗時t(n)為o(nlogn)

空間所需的複雜度就是問題的規模n,需要n個空間來進行儲存操作

6.心得體會:通過這個例子能更深刻地了解分治思想,問題進行分治往往能使時間複雜度更小,更易得到解決

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

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