I am attempting a Python practice problem on GeeksForGeeks, but my code raises IndexError every time.

The problem is as follows:

Given a sorted array of positive integers

`arr`

, and an integer`n`

which represents the length of`arr`

, your task is to rearrange the array elements alternatively i.e first element should be max value, second should be min value, third should be second max, fourth should be second min and so on.

Note: Modify the original array itself.

My code however raises `IndexError: list index out of range`

Here is my code:

```
def rearrange(arr, n):
arr1,arr2 = sorted(arr[:(n//2)]), sorted(arr[(n//2):],reverse=True)
arr.clear()
for i in range(n):
arr.append(arr2[0]); arr2.pop(0)
arr.append(arr1[0]); arr1.pop(0)
```

Here is the error:

```
File "/home/4c7d0350d40e21b84be527508f21cb47.py", line 9, in rearrange
arr.append(arr2[0]); arr2.pop(0)
IndexError: list index out of range
```

I don’t understand why this is happening. Can anyone provide an explanation?

### >Solution :

In your code, both arr1 and arr2 are initialized with a length of `n//2`

. In your for loop:

```
for i in range(n):
arr.append(arr2[0]); arr2.pop(0)
arr.append(arr1[0]); arr1.pop(0)
```

You access the first element and remove the first element `n`

times! This requires there to be `n`

elements in `arr1`

and `arr2`

, but there are not this many. So, you keep trying to access the 0 index element of the array even after the array is empty, which causes this error.