1 书上说要参考某论文,不明觉厉。
3 这个大概是个数列求和,没啥可说的。
4 每一个数字都是[-1,1]之间随机取的一个数字,服从均匀分布,假设这个数组足够大,那么每个数字都可能出现,为此可以推测最大子段和期望是1.
5 cumarr声明成 float*cumarr,则赋值 cumarr=realarray+1;意味着cumarr[-1]指向realarray[0]。
9 maxsofar初始值为数组第一个元素的值,不知道这题放在这里有啥意思。
10 这个题目写出程序之后觉得特别啰嗦……
public static void near0(int[] array, int t) {
int n = array.length;
int[] sum = new int[n];
int[] flag = new int[n];
sum[0] = array[0];
flag[0] = 0;
for (int i = 1; i < n; i++) {
sum[i] = sum[i - 1] + array[i];
flag[i] = i;
System.out.print(sum[i] + " ");
}
System.out.println();
Sort(sum, flag);
}
public static void Sort(int[] array, int[] anotherArray) {
int t = 0, position = 0;
for (int i = 0; i < array.length; i++) {
t = array[i];
position = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < t) {
t = array[j];
position = j;
}
}
int temp = array[i];
array[i] = array[position];
array[position] = temp;
temp = anotherArray[i];
anotherArray[i] = anotherArray[position];
anotherArray[position] = temp;
}
int r = Math.abs(array[1] - array[0]);
int p = 0;
int q = 0;
for (int i = 1; i < array.length; i++) {
if (Math.abs(array[i] - array[i - 1]) < r) {
r = Math.abs(array[i] - array[i - 1]);
p = i;
q = i - 1;
}
}
System.out.println(r + " " + anotherArray[p] + " " + anotherArray[q]);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] array = new int[] { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 };
near0(array, 0);
}