#include
/*function:列印int型陣列
parameter: int型陣列,陣列的長度
*/void
displayarray
(int a,
int n)
printf
("\n");
}/*function:劃分由下標s開始到t終止的int陣列
parameter: int型陣列,陣列的起始座標,陣列的終點座標
return:返回劃分的下標
*/int
partitionarray
(int a,
int s,
int t)
a[i]
= a[j]
;//起始a[i]的值已經被tmp保留
while
(i < j && a[i]
<= tmp)
} a[i]
= tmp;
return i;}/*
function:遞迴,分治法,快速排序
parameter:int陣列,起始下標,終點下標
*/void
quicksortarray
(int a,
int s,
int t)
}/*主函式*/
intmain()
;printf
("排序前:\n");
displayarray
(a,10);
printf
("排序後:\n");
quicksortarray
(a,0,9
);displayarray
(a,10);
return0;
}
演算法導論 分治法
分治法的思想 分 將問題分解為規模更小的子問題 治 將這些規模更小的子問題逐個擊破 合 將已解決的子問題合併,最終得出 母 問題的解 例如 將乙個陣列a,從小到到大排序。分治思想 我們可以將陣列a分成2個陣列,即a 0.a.length 2 a a.length 2 1,a.length 分別將它們...
005 演算法 分治法
一 概念 在電腦科學中,分治法是建基於多項分支遞迴的一種很重要的演算法正規化。字面上的解釋是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,直到最後子問題可以寄簡單的直接求解,原問題的解即子問題的解的合併。這個技巧是很多高校演算法的基礎,如排序演算法 快速排序 歸併排序 傅利葉轉...
分治演算法 折半查詢法
二分查詢演算法根據邊界情況不同,一般可分為兩種情況,一中是左閉右開區間,類似於 left,right 一種是左閉右閉區間,在非遞迴二分中,必須遵守一定的區間規則,否則會造成程式錯誤,即區間不能夠重複。思路 假設目標值在閉區間 l,r 中,每次將區間長度縮小一半,當l r時,我們就找到了目標值。題目描...