// Bubble-sort using ranks
public static void bubbleSort1(Sequence S) {
int n = S.size();
for (int i=0; i < n; i++) // i-th pass
for (int j=1; j < n-i; j++)
if ( valAtRank(S, j-1) > valAtRank(S, j) )
S.swapElements(S.atRank(j-1), S.atRank(j));
}
// Bubble-sort using positions
public static void bubbleSort2(Sequence S) {
Position prec, succ;
int n = S.size();
for (int i=0; i < n; i++) { // i-th pass
prec = S.first();
for (int j=1; j < n-i; j++) {
succ = S.after(prec);
if ( valAtPos(prec) > valAtPos(succ) )
S.swapElements(prec, succ);
prec = succ;
}
}
}
private static int valAtRank(Sequence S, int i) {
return ((Integer) S.elemAtRank(i)).intValue();
}
private static int valAtPos(Position p) {
return ((Integer) p.element()).intValue();
}