In your for loop in the ShrinkArray() method, i is increasing to 'MaxArray' where your temp array only has 'MaxArray - ARRAYSIZE' size. So you are attempting to access out of bounds of temp when you do:
temp[i] = saleArray[i];
So just change your for loop to:
1 2
for(int i = 0; i < MaxArray - ARRAYSIZE; i++)//Copies Data
temp[i]= saleArray[i];