最大子串行和 歸併排序

2022-03-21 20:58:28 字數 1118 閱讀 5556

今天看劉汝佳看到歸併排序還看了分治求最大子串行和,感覺簡單多了,剛開始學時看了幾天都沒看會,現在在看感覺果然不一樣^.^,先打乙個歸併排序,馬上就打子串行和,

哎~為什麼總打這些水題呢,一是我現在很水,二是涉及人生完不完整的八數碼暫時理解不深(哈哈),勉強看懂,等過幾天就會相對高階的演算法了,這裡複製上一段話是cxl學長寫的:

如果說入門注重的是程式設計能力,那麼第2步——起步,開始需要一些思維能力了。所謂思維能力,就是……嗯……比如智力題,小學奧數題,數學應用題,它有一定的靈光一現的成分。從第乙個階段到第二個階段不要著急。慢慢做就好了。有些人會很快,路了。但更多的人會卡一下。這時候原因是他已經有了這樣的思維能力,經過幾道題的啟發,他就知道是什麼套,淡定,別急。盡力做題,不會就看答案,然後想明白答案為什麼正確,再嘗試想一想,為什麼我沒想到,怎麼樣我才能想到?積累一些以後,自然就通了。

前面囉嗦了半天,我講的是我自己的乙個過程。最簡單的行動指引是:與高中學數學、學物理等學科的方法相同。(教程 à 課本 or 上課, 題目 à 作業 or 試卷, 答案 à 課後答案)。有這麼乙個對應關係,你是不是不用再糾結到底看不看題解了?

歸併:

1 #include2 #include3 #include4

using

namespace

std;

5void merge_sort(int *a,int x,int y,int *t)//

t為temp,a為ans616

for(i=x;i//

將最後拍好的陣列放到a;17}

18}19int

main()

2029 merge_sort(a,0

,a,t);

30for(int i=0;i)

31 cout<"";

32}33 }

子串行和:

#include#include

#include

using

namespace

std;

int a[20

];int maxsum(int l,int

r)

else

}int

main()

}

歸併排序 最大子陣列

1.歸併排序 分治模式 1 分解原問題為若干子問題,這些子問題是原問題的規模較小的例項。2 解決子問題,遞迴求解子問題。子問題規模足夠小時,直接求解。3 合併子問題的解,得到原問題的解。歸併排序完全遵循分治模式。1 分解待排序的n個元素列成各具n 2個元素的兩個子串行。2 使用歸併排序遞迴地排序兩個...

歸併排序和逆序列演算法

說明排序問題是資料處理中常會遇到的問題,通常是解決相關問題的前處理過程。這類演算法目前有很多,比如相對暴力的氣泡排序和插入排序法。這類暴力求解演算法的時間複雜度一般為o n2 顯然這個時間複雜度無法滿足工程的應用。所以,在暴力求解的基礎上發展出了歸併排序 堆排序以及快速排序,這類排序演算法時間複雜度...

C演算法 分治法之歸併排序 最大子段和

子程式直接呼叫自己或通過一系列條用語句間接呼叫自己。分治和遞迴經常同時應用於演算法設計之中,並由此產生許多高校的演算法。分解 求解 合併 時間複雜度 o nlogn include mergesort.h includevoid mergesort int a,int p,int r if righ...