本例項不是為了說明這幾種方法效率問題,只是為提供乙個新的思路。
參考總結了4種思想。
a=begin=0;end=a.length()-1;
1,從begin開始一直加到end
2,從end開始一直加到begin
3,begin和end同時開始進行加法操作
4,定義中點middle,對[begin,middle),[middle,end)進行操作,思想:二分法
public class a1test
// 列印begin-end
public static void f2(int begin, int end)
// 求a陣列中,從begin到結束的元素和
private static int f3(int a, int begin)
// 求a陣列中,從end到第乙個的元素和
private static int f4(int a, int end)
// 兩邊逼近求和
private static int f5(int a, int begin, int end)
if (end - begin == 0)// 陣列長度為奇數
int x = f5(a, begin + 1, end - 1);
system.out.println(x);
return x + a[begin] + a[end];
} // 折半求和 利用中間值
private static int f6(int a, int begin, int end)
public static void main(string args) ;
// int sum=f3(a, 0);
// int sum=f4(a, a.length-1);
// int sum = f5(a, 0, a.length - 1);
int sum = f6(a, 0, a.length - 1);
system.out.println(sum);
}}
此次僅為自我總結,防止忘記。 求陣列的小和
陣列小和定義如下 有一陣列s 1,3,5,2,4,6 在s 0 的左邊小於或等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數的和為1,以此類推,把每個元素的左邊小於或等於當前元素的和加起來,就是該陣列的小和,s的小和為0 1 4 1 6 15 37 如下 public class p...
求陣列的小和
陣列小和的定義 例如,陣列s 1,3,5,2,4,6 在s 0 的左邊小於等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數和為1,在s 2 的左邊小於等於s 2 的數和為1 3 4.一次類推s 3 1,s 4 1 3 2 6,s 5 15,所以s的小和為0 1 4 1 6 15 27...
求陣列的最大值和次大值 (迭代 遞迴)
參考 資料結構 鄧俊輝 求陣列a 在區間 lo,hi 內的最大值和第二大值。返回最大值的下標x1和第二大值的下標x2 迭代1 void max2 int a,int lo,int hi,int x1,int x2 迭代2 相對於迭代1不會改進最壞情況下的時間複雜度 void swap int x,i...