编程珠玑第二版第八章习题(Java)

来源:互联网 发布:电脑改图片软件 编辑:程序博客网 时间:2024/05/21 17:01

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);}


0 0
原创粉丝点击