演算法 分治法

2021-10-07 04:19:19 字數 892 閱讀 4537

#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時,我們就找到了目標值。題目描...