算法(4th ed)(25):基础——基础编程模型 3.5.3

阅读数:29 2019 年 10 月 30 日 06:40

算法(4th ed)(25):基础——基础编程模型 3.5.3

(数组:使用数组)

典型的数组处理代码请见表 1.1.4。在声明并创建数组之后,在代码的任何地方都能通过数组名之后的方括号中的索引来访问其中的元素。数组一经创建,它的大小就是固定的。程序能够通过 a.length 获取数组 a[] 的长度,而它的最后一个元素总是 a[a.length – 1]。Java 会自动进行边界检查——如果你创建了一个大小为 N 的数组,但使用了一个小于 0 或者大于 N-1 的索引访问它,程序会因为运行时抛出 ArrayIndexOutOfBoundsException 异常而终止。

表 1.1.4 典型的数组处理代码

任务 实现(代码片段)
找出数组中最大的元素
double max = a[0];
for (int i = 1; i < a.length; i++)
if (a[i] > max) max = a[i];
计算数组元素的平均值
int N = a.length;
double sum = 0.0;
for (int i = 0; i < N; i++)
sum += a[i];
double average = sum / N;
复制数组
int N = a.length;
double[] b = new double[N];
for (int i = 0; i < N; i++)
b[i] = a[i];
颠倒数组元素的顺序
int N = a.length;
for (int i = 0; i < N/2; i++)
{
double temp = a[i];
a[i] = a[N-1-i];
a[N-i-1] = temp;
}
矩阵相乘(方阵)
a[][] * b[][] = c[][]
int N = a.length;
double[][] c = new double[N][N];
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
{ // 计算行 i 和列 j 的点乘
for (int k = 0; k < N; k++)
c[i][j] += a[i][k]*b[k][j];
}

评论

发布