C++ Notes: Example - reverse
Reverses the elements in an array of n elements. When it is finished,
the element at a[0] will be exchanged with a[n-1], a[1] exchanged with
a[n-2], etc.
void reverse(int a[], int n) {
// function: Reverses the elements of a.
// parameters:
// a inout array of values.
// n in number of values in a, a[0]..a[n-1]
// returns: nothing
for (int i=0; i<n/2; i++) {
int temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
return;
}
Different use of indexes
void reverse(int a[], int n) {
int head = 0; // index of first element
int tail = n-1; // index of last element
while (head < tail) {
int temp = a[head];
a[head] = a[tail];
a[tail] = temp;
head++;
tail--;
}
return;
}
Same algorithm using pointers
void reverse(int* a, int n) {
int* head = a; // pointer to first element
int* tail = a+n-1; // pointer to last element
while (head < tail) {
int temp = *head;
*head = *tail;
*tail = temp;
head++;
tail--;
}
return;
}