演算法導論4 1

2021-10-01 23:31:20 字數 1475 閱讀 8743

返回由最大負數組成的單元素子陣列
**如下:

#includeusing namespace std;

int main() ;

int n = 16;

int max_sum = 0, max_left = 0, max_right = 0;

for (int i = 0; i < n; i++)

} }printf("sum: %d [%d,%d]", max_sum, max_left, max_right);

return 0;

}

乙個的複雜度是o(n

2)o(n^2)

o(n2

),乙個是o(n

lg(n

))o(nlg(n))

o(nlg(

n)),思路是先計算出交叉點,再設計大致規模的測試資料,具體的懶得實操了。

修改後演算法就是暴力法和遞迴法的結合,由於n

0n_0

n0​的存在,在[0,

n0][0,n_0]

[0,n0​

]之間是暴力法,在[n0

,+∞]

[n_0,+∞]

[n0​,+

∞]是遞迴法

若n

0n_0

n0​小於等於原交叉點x

0x_0

x0​時,交叉點不改變,因為在原交叉點[n0

,x0]

[n_0,x_0]

[n0​,x

0​]仍是遞迴法,且此時遞迴處理的效率不如暴力處理,從x

0x_0

x0​之後遞迴的效率才超出暴力法

若n

0n_0

n0​大於原交叉點x

0x_0

x0​時,交叉點增大到n

0n_0

n0​,此時改良後的演算法在[0,

x0][0,x_0]

[0,x0​

]時效率等於暴力法,在[x0

,n0]

[x_0,n_0]

[x0​,n

0​]之間,雖然遞迴處理效率更高,但是由於仍使用暴力法,所以並沒有效能交叉,而在[n0

,+∞]

[n_0,+∞]

[n0​,+

∞]之後,採用了遞迴法,且由於x

0x_0x0

​​,此時遞迴效率高於暴力法,所以效能交叉點變為n

0n_0

n0​在high=low時,即遞迴終結點處,設定,若此時a[high]<0,則返回(-1,-1,0)。

如圖,寫的有點亂,a、max、b既代表子陣列又代表子陣列之和。

演算法導論 隨機演算法

一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...

《演算法導論》 演算法導論2 2 1插入排序

2.1 插入排序。我們分析的第乙個演算法是插入排序演算法,輸入 n個數 a1,a2,a3,a4,a5,a6,a7 an 輸出 序列的乙個排列 即重新排序 a1 a2 a3 使a1 a2 a3 插入排序演算法的偽 是以乙個過程的形式給出的,稱為insertion sort,它的引數是乙個陣列。包括了n...

《演算法筆記》4 1 總結

本節內容為排序 題目列表 b1015 a1062 a1012 a1016 a1028 a1055 a1075 a1083 a1080 a1095 本節首先介紹了標頭檔案下的排序函式sort sort 函式採用快排實現,並且進行了特殊處理保證能夠規避掉經典快排中可能會實際上退化到o n2 的情況,so...