演算法導論 尋找最大子陣列

2021-07-26 06:30:38 字數 1709 閱讀 8475

求最大子陣列
#include 

using namespace std;

struct result_structure;

result_structure mid_array_sum(int*a,int low,int mid,int high)

}sum = 0;

result.high_index = mid + 1;

for (int i = mid + 1; i <= high; i++)

}result.sum = temp_left_sum + temp_right_sum;

return result;

}result_structure recursive_merge(int*a,int low,int high)

int mid = (low + high)/2;

result_left = recursive_merge(a,low,mid); //遞迴左半部分

result_right = recursive_merge(a,mid+1,high); //遞迴右半部分

result_mid = mid_array_sum(a,low,mid,high); //計算此層的和(並不是最大中間子串行,問題已經化解為三部分找最大部分)

if(result_left.sum > result_right.sum && result_left.sum > result_mid.sum)else

if(result_right.sum > result_left.sum && result_right.sum > result_mid.sum)else

return result;

}int main() ;

result_structure result = recursive_merge(a,0,3);

cout << "sum = "

<< result.sum

<"low_index = "

<< result.low_index << endl

<< "high_index = "

<< result.high_index << endl;

return

0;}

#include 

#include

using

namespace

std;

struct result_struct;

result_struct find_max_array_best(int* a,int low,int high)else

if(current_sum > result.max_sum)

}return result;

}int main() ;

result_struct result = find_max_array_best(a,0,3);

cout

<< "sum = "

<< result.max_sum <"low_index = "

<< result.low_index << endl

<< "high_index = "

<< result.high_index << endl;

return

0;}

當前存在的就是這三種方法:

演算法導論之尋找最大子陣列

bool findmaxmumsubarray float a,int low,int high,float fmaxmumsum,int ifrom,int ito if low high 分段 int imid low high 2 最大子陣列要麼在left mid,或 mid 1 right,...

演算法導論 最大子陣列

之前都在準備考試,寒假還是繼續學習。除了家裡打掃衛生,似乎也確實沒什麼事。多看書,多寫 總能提高的。堅持。這次學到了函式返回值可以是乙個結構體,當我們要返回多個值的時候,就可以返回結構體。還有就是對分治法有了更深的認識。include typedef struct op op findmaxcros...

演算法導論2 最大子陣列

最大子陣列問題 假設陣列a low.high 求存在於陣列a中的連續子陣列之和 或陣列中連續元素之和 最大的子陣列,例如a 4 的最大子陣列為a 0 2 和最大為3 2 1 2。如果採用暴力求解的演算法則問題也可以很簡單的求解出來,不過這種方法的時間複雜度為 n 所以寫一下更好的方法。使用分治策略的...