The rows of a 10 x 3 matrix x are sorted in ascending order using Columns 0 and 1 as the keys. There are two missing values (NaNs) in the keys. The observations containing these values are moved to the end of the sorted array.
import com.imsl.math.*;
import com.imsl.stat.*;
public class SortEx2 {
public static void main(String args[]) {
int nKeys=2;
double x[][] = {{1.0, 1.0, 1.0},
{2.0, 1.0, 2.0},
{1.0, 1.0, 3.0},
{1.0, 1.0, 4.0},
{2.0, 2.0, 5.0},
{1.0, 2.0, 6.0},
{1.0, 2.0, 7.0},
{1.0, 1.0, 8.0},
{2.0, 2.0, 9.0},
{1.0, 1.0, 9.0}};
int iperm[] = new int[x.length];
x[4][1] = Double.NaN;
x[6][0] = Double.NaN;
PrintMatrix pm = new PrintMatrix("The Input Array");
PrintMatrixFormat mf = new PrintMatrixFormat();
mf.setNoRowLabels();
mf.setNoColumnLabels();
// Print the array
pm.print(mf, x);
System.out.println();
try {
Sort.ascending(x, nKeys, iperm);
} catch (Exception e) {
}
pm = new PrintMatrix("The Sorted Array - Lowest to Highest");
mf = new PrintMatrixFormat();
mf.setNoRowLabels();
mf.setNoColumnLabels();
// Print the array
pm.print(mf, x);
pm = new PrintMatrix("The permutation array");
mf = new PrintMatrixFormat();
mf.setNoRowLabels();
mf.setNoColumnLabels();
pm.print(mf, iperm);
}
}
The Input Array
1 1 1
2 1 2
1 1 3
1 1 4
2 ? 5
1 2 6
? 2 7
1 1 8
2 2 9
1 1 9
The Sorted Array - Lowest to Highest
1 1 1
1 1 9
1 1 3
1 1 4
1 1 8
1 2 6
2 1 2
2 2 9
? 2 7
2 ? 5
The permutation array
0
9
2
3
7
5
1
8
6
4
Link to Java source.