 Problem statement
Consider an array having N elements. Rearrange the array such that A[i] = i and if i is not present, replace it with -1 at that place. As not all elements in between 0 to N-1 will be present.

Naive Approach
Here we have used two for loops. One for traversing through numbers O to N-1 and the other for traversing through the array.

```/*C code to Rearrange an array such that arr[i] = i*/
#include<stdio.h>

void reArrangeArray(int arr[], int n)
{
int i, j, temp;

for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (arr[j] == i) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
break;
}
}
}

for (i = 0; i < n; i++)
{
if (arr[i] != i)
{
arr[i] = -1;
}
}

printf("\nArray after rearranging:\n");
for (i = 0; i < n; i++) {
printf("%d\t",arr[i]);
}
}

int main()
{
int n, arr[] = { -1, -1, 5, 1, 8, 3, 2, -1, 4, -1 };
n = sizeof(arr) / sizeof(arr);

printf("Array is:\n");
for (int i = 0; i < n; i++) {
printf("%d\t",arr[i]);
}

reArrangeArray(arr, n);
}

```

Output

 gcc arri.c \$ ./a.out Array is: -1 -1 5 1 8 3 2 -1 4 -1 Array after rearranging: -1 1 2 3 4 5 -1 -1 8 -1 \$
 Time complexity: O(n)

also see

Previous articleCyclically rotate an array by k elements in C
Next articleReverse a string using stack