分治法求和C語言 演算法設計實驗2

2021-08-13 17:54:23 字數 768 閱讀 4167

題目:用分治法求和 

這裡我們舉出乙個例子,利用分治法求陣列的和: 

比如: a[10] = ,分治法的演算法之前我們學資料結構的時候,有過應用,資料結構學過的歸併排序,二分法,快速排序演算法等裡面用到的就是分治法的思想: 

如圖: 

把乙個大問題,分解成若干個小問題,這裡把乙個大的陣列分解成若干個小陣列,再合併把值返回。 

下面看程式**:

#include#includeint add(int *a,int

left,int

right);

int main()

int sum=add(array,0,9);

printf("%d\n",sum);

return 0;

} int add(int *a,int

left,int

right)

else

if (left == right-1)

else

}

執行結果: 

題目還是比較簡單的,但是利用分治法來求和在效率上明顯很低,用乙個迴圈一次遍歷就可以實現求和了,而且效率比這個高。當然,這裡只是出於老師實驗要求的題目,能把實驗分混到手就行了。

常見演算法設計方法 分治法

歸併排序就是常見的一種採用 分治法 進行設計的演算法,以下先給出具體的c 版 示例 對列表進行遞迴排序 待排序陣列 public static listsort listlist 合併已經排序好的兩個list left list right list private static listmerge...

分治法例項 來自 演算法 C語言實現

使用分治法求最大值 這個函式將陣列a l a r 分成a l a m 和a m 1 a r 兩部分,分別求出每一部分的最大元素 遞迴地 並返回較大的那乙個作為整個陣列的最大元素.如果陣列大小是偶數,則兩部分大小相等 如果是奇數,第一部分比第二部分的大小大1.include include inclu...

C語言實現分治法

我用了大約三種方法實現,逐漸減少時間複雜度,分別用不同的命名 方式來區分他們,順便列印了那個子區間的和值最大,maxsum 1 用陣列的方式實現三次遍歷,求出所有子串行的和值,並且比較大小,求出最大子串行值 maxsum 2 用另乙個陣列來儲存從下標0開始的所有和值,然後操作次此序列,用減的方式,來...