今天看劉汝佳看到歸併排序還看了分治求最大子串行和,感覺簡單多了,剛開始學時看了幾天都沒看會,現在在看感覺果然不一樣^.^,先打乙個歸併排序,馬上就打子串行和,
哎~為什麼總打這些水題呢,一是我現在很水,二是涉及人生完不完整的八數碼暫時理解不深(哈哈),勉強看懂,等過幾天就會相對高階的演算法了,這裡複製上一段話是cxl學長寫的:
如果說入門注重的是程式設計能力,那麼第2步——起步,開始需要一些思維能力了。所謂思維能力,就是……嗯……比如智力題,小學奧數題,數學應用題,它有一定的靈光一現的成分。從第乙個階段到第二個階段不要著急。慢慢做就好了。有些人會很快,路了。但更多的人會卡一下。這時候原因是他已經有了這樣的思維能力,經過幾道題的啟發,他就知道是什麼套,淡定,別急。盡力做題,不會就看答案,然後想明白答案為什麼正確,再嘗試想一想,為什麼我沒想到,怎麼樣我才能想到?積累一些以後,自然就通了。
前面囉嗦了半天,我講的是我自己的乙個過程。最簡單的行動指引是:與高中學數學、學物理等學科的方法相同。(教程 à 課本 or 上課, 題目 à 作業 or 試卷, 答案 à 課後答案)。有這麼乙個對應關係,你是不是不用再糾結到底看不看題解了?
歸併:
1 #include2 #include3 #include4using
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...