Bird
0
0
DSA Cprogramming~20 mins

Array Reversal Techniques in DSA C - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Array Reversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Array Reversal Using Two-Pointer Swap
What is the output of the following C code that reverses an array using two pointers?
DSA C
#include <stdio.h>

void reverse(int arr[], int n) {
    int start = 0, end = n - 1;
    while (start < end) {
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = 5;
    reverse(arr, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
A1 2 3 4 5
B1 5 3 2 4
C5 4 3 2 1
D5 2 3 4 1
Attempts:
2 left
💡 Hint
Think about how swapping elements from start and end moves towards the center.
Predict Output
intermediate
2:00remaining
Output of Array Reversal Using Recursion
What is the output of this C program that reverses an array recursively?
DSA C
#include <stdio.h>

void reverse(int arr[], int start, int end) {
    if (start >= end) return;
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
    reverse(arr, start + 1, end - 1);
}

int main() {
    int arr[] = {10, 20, 30, 40};
    int n = 4;
    reverse(arr, 0, n - 1);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
A10 20 30 40
B40 30 20 10
C40 20 30 10
D10 40 30 20
Attempts:
2 left
💡 Hint
Recursion swaps outer elements and moves inward.
🔧 Debug
advanced
2:00remaining
Identify the Error in Array Reversal Code
What error does the following C code produce when trying to reverse an array?
DSA C
#include <stdio.h>

void reverse(int arr[], int n) {
    int i;
    for (i = 0; i <= n / 2; i++) {
        int temp = arr[i];
        arr[i] = arr[n - i];
        arr[n - i] = temp;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4};
    int n = 4;
    reverse(arr, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
ARuntime error: Array index out of bounds
BNo error, prints reversed array correctly
CCompilation error: missing semicolon
DLogical error: array remains unchanged
Attempts:
2 left
💡 Hint
Check the index used for swapping elements carefully.
Predict Output
advanced
2:00remaining
Output of Array Reversal Using XOR Swap
What is the output of this C code that reverses an array using XOR swap technique?
DSA C
#include <stdio.h>

void reverse(int arr[], int n) {
    int start = 0, end = n - 1;
    while (start < end) {
        arr[start] ^= arr[end];
        arr[end] ^= arr[start];
        arr[start] ^= arr[end];
        start++;
        end--;
    }
}

int main() {
    int arr[] = {7, 8, 9};
    int n = 3;
    reverse(arr, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
A9 7 8
B8 7 9
C7 8 9
D9 8 7
Attempts:
2 left
💡 Hint
XOR swap exchanges values without a temporary variable.
🧠 Conceptual
expert
2:00remaining
Time Complexity of Different Array Reversal Techniques
Which statement correctly describes the time complexity of common array reversal methods (two-pointer swap, recursion, XOR swap)?
AAll methods have O(n) time complexity because each element is visited once.
BRecursion method has O(n^2) time complexity due to repeated calls.
CXOR swap method has O(n^2) time complexity because of bitwise operations.
DTwo-pointer swap method has O(log n) time complexity as it swaps pairs.
Attempts:
2 left
💡 Hint
Consider how many times each element is accessed or swapped.