演算法第乙個引子 求子數列的最大和

2021-10-05 12:02:38 字數 1777 閱讀 8703

一直恐懼資料結構的某大一學生終於耐不住寂寞開始了演算法的預習

先從乙個最簡單的開始吧

眾所周知 那就是 !!求一段數列的子數列的最大和!!

這裡說4種學到的方法

從最簡單的說起,那就是從i到j再用迴圈將每一段的和都求出來

當然這種情況在資料過大的時候,電腦會罷工(誰給我瓶脈動)

no.4

int

findmaxsub4

(int

*a,int n)}}

return max;

}

no.3

為了讓程式快一些,

聰明的前輩想到可以不用 k 的那重迴圈

直接在前面求出的和的基礎上,新增上後面的就可以啦~

int

findmaxsub3

(int

*a,int n)

}return max;

}

no.2

在快一點的就是傳說中的分治

這一是我從上大學以來面對黑框框這麼久第一次聽到這麼有詩意的名字

它的原理是想將資料不斷分成兩半

再分別求出左半右半,以及跨過分界線的最大值

再將他們三者比較得到最終結果

int

max3

(int a,

int b,

int c)

//用函式求出三個數的最大值

intdivideandconquer

(int

*a,int left,

int right)

//divide

center =

(left+right)/2

; maxlsum =

divideandconquer

(a,left,center)

; maxrsum =

divideandconquer

(a,center+

1,right);

leftbordersum =0;

maxlbordersum =0;

for(i=center; i>=left; i--

) rightbordersum =0;

maxrbordersum =0;

for(i=center; i<=right; i++

)//conquer

return

max3

(maxlsum,maxrsum,maxlbordersum+maxrbordersum);}

intfindmaxsub2

(int

*a,int n)

他在同時更新max和範圍

當sum>max 時,更新max

當sum<0時就可以捨棄前面的所有數啦

因為比零小還不如不加呢,哼

就是這麼傲嬌

int

findmaxsub1

(int

*a,int n)

else

if(num<0)

}return max;

}

這些就是學到的求子數列最大和的方法啦

看來資料結構還是有很大用的~

有沒有引起你對資料結構的興趣呢~

一起加油吧!!!

kmeans 第乙個matlab演算法

k均值演算法 km 32 最終聚類的大小 影象的大小 rgbsize size immatrix 陣列下標從1開始 imshow immatrix 顯示 immatrix 1,1,1 end for i 1 1 rgbsize 1 for j 1 1 rgbsize 2 immatrix i,j,1...

機器學習第乙個演算法

單變數線性回歸 導包import numpy as np import matplotlib.pyplot as plt plt.rcparams font.sans serif simhei 正常顯示中文 plt.rcparams axes.unicode minus false 正常顯示符號 讀...

第乙個演算法 「假的」桶排序

堅持寫演算法第一天,先來乙個桶排序,為什麼叫 假的 桶排序,因為它是乙個簡化版的,真正的桶排序比這個複雜的多,第一天寫演算法,先來個簡單點的 偷懶 我們假設輸入五個數,這五個數的範圍在0到10,然後按從大到小的順序輸出!簡單粗暴,直接上 吧!includeint main for i 10 i 0 ...