# Reversing the elements of an array involves swapping the corresponding elements of the array: the first with the last, the second with the next to the last, and so on, all the way to the middle of the array. Given an array a, an int variable n containing the number of elements in a, and two other int variables, k and temp, write a loop that reverses the elements of the array. Do not use any other variables besides a, n, k, and temp.

2

### CHALLENGE:

Reversing the elements of an array involves swapping the corresponding elements of the array: the first with the last, the second with the next to the last, and so on, all the way to the middle of the array. Given an array a, an int variable n containing the number of elements in a, and two other int variables, k and temp, write a loop that reverses the elements of the array. Do not use any other variables besides a, n, k, and temp.

### SOLUTION:

```
for (int k=0; k<n/2; k++){
temp=a[k];
a[k]=a[n-k-1];
a[n-k-1]=temp;
}

```

• Bruce Goheen says:

I just want to point out that order of operations is important here. These two statements:
a[k]=a[n-k-1];
a[n-k-1]=temp;

Can also be written as:
a[k]=a[n-(k+1)];
a[n-(k+1)]=temp;

But only with the added parentheses; similarly, adding parentheses to the original code will be incorrect. Addition and subtraction share left to right associativity unless a higher precedence operation (the parentheses) is involved. The two incorrect methods I mentioned would result in the correspondence being off by 2 each time.

• Heather West says:

I deleted int and it worked.