split

Category: ArrayList
Author: Stuart Reges
Book Chapter: 10.1
Problem: split
  Write a static method called split that takes an
   ArrayList of integer values as a parameter and that replaces each value in
   the list with a pair of values, each half the original.  If a number in the
   original list is odd, then the first number in the new pair should be one
   higher than the second so that the sum equals the original number.  For
   example, if a variable called list stores this sequence of values:

        [18, 7, 4, 24, 11]

   The number 18 is split into the pair (9, 9), the number 7 is split into (4,
   3), the number 4 is split into (2, 2), the number 24 is split into (12, 12)
   and the number 11 is split into (6, 5).  Thus, the call:

        split(list);

   should cause list to store the following sequence of values afterwards:

        [9, 9, 4, 3, 2, 2, 12, 12, 6, 5]

   You may assume that all numbers in the list are nonnegative.  Recall that
   the primary methods for manipulating an ArrayList are:

        add(E value)             appends value at end of list
        add(int index, E value)  inserts given value at given index, shifting
                                 subsequent values right
        clear()                  removes all elements of the list
        get(int index)           returns the value at given index
        remove(int index)        removes and returns value at given index,
                                 shifting subsequent values left
        set(int index, E value)  replaces value at given index with given value
        size()                   returns the number of elements in list