Reverse an Array In-Place

Code

#include <stdio.h>
// Input:  n = 5, arr = [1 2 3 4 5]  
// Output: [5 4 3 2 1]
void reverse_array(int *a, int n){
    int temp = 0;
    if ( n % 2 != 0){
        for(int i = 0; i < (n - 1) / 2; i++){
            temp = a[i];
            a[i] = a[n - i - 1];
            a[n - i - 1] = temp;
        }
    }
    else {
        for(int i = 0; i< (n / 2); i++){
            temp = a[i];
            a[i] = a[n-1-i];
            a[n-1-i] = temp;
        }
    }
}


int main(){
    int n, arr[100];
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
        scanf("%d", &arr[i]);
    }
    reverse_array(arr, n);
    for(int i = 0; i < n; i++){
        printf("%d ", arr[i]);
    }
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

5 1 2 3 4 5

Expected Output

5 4 3 2 1