8.8 遍历和计数
如果前面的值表示的是考试成绩,并且这些成绩非常糟糕,老师可能会在课程上以直方图(histogram)的方式呈现它们。直方图在统计学中是一组计数器,记录了每个值出现的次数。
就考试成绩而言,我们可能需要 10 个计数器,用来指出考试成绩为 90~100 分、80~90 分等的学生分别有多少。为此,我们可以遍历数组,并计算值在给定范围内的元素数。
下面的方法接受一个数组和两个整数(low 和 high),并返回值在范围 low~high 的元素数。
public static int inRange(int[] a, int low, int high) {int count = 0;for (int i = 0; i < a.length; i++) {if (a[i] >= low && a[i] < high) {count++;}}return count;}
你应该很熟悉这种模式:这也是一种归并操作。注意,范围包含 low(>=),但不包含 high(<)。这种细节可避免我们将一个分数算两次。
现在可以计算每个范围内的考试成绩数了:
int[] scores = randomArray(30);int a = inRange(scores, 90, 100);int b = inRange(scores, 80, 90);int c = inRange(scores, 70, 80);int d = inRange(scores, 60, 70);int f = inRange(scores, 0, 60);
