public class kaldewaij1020_jml { public static void main(String args[]) { int h[] = new int[] {-1,2,-3,-4,5,6,7,-2,-8,10}; new kaldewaij1020_jml().algoritmo(10, h); } void algoritmo(final int N, int[] h) { //@ assert N >= 0; int m = 0, n = 0; //@ maintaining 0 <= m && m <= n && n <= N && (\forall int i ; 0 <= i && i < m ; h[i] <= 0) && (\forall int i ; m <= i && i < n ; h[i] >= 0); //@ decreasing N-n; while (n != N) { if (h[n] <= 0) { {int r = h[m]; h[m] = h[n]; h[n] = r;} m = m + 1; n = n + 1; } else if (h[n] >= 0) { n = n+1; } } //@ assert (\forall int i ; 0 <= i && i < m ; h[i] <= 0) && (\forall int i ; m <= i && i < n ; h[i] >= 0); } }