I need to have all the elements in the even indices arr[0],arr[2],arr[4] etc be smaller than the elements with odd indices arr[1],arr[3],arr[5], etc
My approach was to find the MEDIAN and then write out all elements smaller than the median in odd indices and all elements larger than the median in even places.
Question: is there a way to do the array shuffling IN PLACE after finding the median ?
import random
def quickselect(items, item_index):
    def select(lst, l, r, index):
        # base case
        if r == l:
            return lst[l]
        # choose random pivot
        pivot_index = random.randint(l, r)
        # move pivot to beginning of list
        lst[l], lst[pivot_index] = lst[pivot_index], lst[l]
        # partition
        i = l
        for j in range(l+1, r+1):
            if lst[j] < lst[l]:
                i += 1
                lst[i], lst[j] = lst[j], lst[i]
        # move pivot to correct location
        lst[i], lst[l] = lst[l], lst[i]
        # recursively partition one side only
        if index == i:
            return lst[i]
        elif index < i:
            return select(lst, l, i-1, index)
        else:
            return select(lst, i+1, r, index)
    if items is None or len(items) < 1:
        return None
    if item_index < 0 or item_index > len(items) - 1:
        raise IndexError()
    return select(items, 0, len(items) - 1, item_index)
def shuffleArray(array, median):
    newArray = [0] * len(array)
    i = 0
    for x in range(0,len(array),2):
        newArray[x] = array[i]
        i+=1
    for y in range(1,len(array),2):
        newArray[y] = array[i]
        i+=1
return newArray
 
    