Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.77 KB | None | 0 0
  1.     /*@ requires 0 <= m < n <= a.length;
  2.     @ behavior mn_reverse:
  3.     @   ensures \forall integer i; m <= i < n ==> \old(a)[i]==a[n+m-i-1];
  4.     @*/
  5.     public static int[] Reverse(int a[], int m, int n)
  6.     {      
  7.         int[] A = new int[a.length];
  8.         /*@ loop_invariant
  9.         @ (\forall integer j; (m <= j < i) ==> (A[j] == a[j]));
  10.         @*/
  11.         for (int i = 0; i < a.length; i++)
  12.         {
  13.                 A[i] = a[i];
  14.         }
  15.  
  16.         int k = (m+n) / 2;
  17.         //@ ghost int[] a_0 = a;
  18.         /*@ loop_invariant m <= i <= k &&
  19.         @ (\forall integer j; (m <= j < i) ==> (a[n+m-j-1] == a_0[j])) &&      
  20.         @ (\forall integer l; (n+m-i-1 <= l < n) ==> (a[l] == a_0[n+m-l-1]));
  21.         @ loop_variant n-i;
  22.         @*/
  23.         for (int i = m; i < k; i++)
  24.         {
  25.                 int temp = a[n+m-i-1];
  26.             a[n+m-i-1] = a[i];
  27.             a[i] = temp;
  28.         }
  29.         return a;
  30.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement