Java Reference
In-Depth Information
int x= numberLess(d, d[0]);
stores 1 in x because one element of d is less than d[0] .
The method body must process array segment b[0..b.length-1] , so we
use this loop schema for processing an array segment:
// Process elements of c[h..k-1] , in order
// inv: h≤i≤k and c[h..i-1] has been processed
for ( int i= h; i != k; i= i + 1) {
Process c[i]
}
Instead of array c , we have b ; instead of h , we have 0 ; and instead of k we have
b.length :
// Process elements of b[0..b.length-1] , in order
// inv: 0 ≤ i ≤ b.length and b[0..i-1] has been processed
for ( int i= 0; i != b.length; i= i + 1) {
Process b[i]
}
What does it mean to process an element b[i] ? If the element is less than
v , we want to count it, so we need a variable n to accumulate the result: n is the
number of elements in segment b[0..i-1] that are less than v , so “Process
b[i] ” means to add 1 to n if b[i] is less than v .
What value should n have initially? At the beginning, no elements have been
processed, so n must be initialized to 0 .
The final step is to return n .
This ends the development. See Fig. 8.2 for the complete function.
See lesson 8-3
to get this pro-
gram.
Activity 8-3.5
shows you how
to test it.
/** = number of elements of b that are less than v */
public static int numberLess( int [] b, int v) {
int n= 0; // number of elements less than v in b[0..j-1].
// Process elements of b[0..b.length-1] , in order
// inv: 0 ≤ i ≤ b.length and the definition of field n
for ( int i= 0; i != b.length; i= i + 1) {
if (b[i] < v)
{ n= n + 1; }
}
return n;
}
Figure 8.2:
Function numberLess
Search WWH ::

Custom Search