title: Add elements into a sorted array in ascending order
body: <p>I have the following program which implements a sorted bag. It adds elements
  successfully in sorted order (ascending order) when giving a list.
  When I created a new sorted bag with the argument of another bag, it's not in sorted order (instead in descending order). See below</p>
  
  <p>Thanks for the help</p>
  
  <pre><code># Array Class
  #----------------------------------------------------
  class Array(object):        # Represents an array.
  DEFAULT_CAPACITY = 5
  def __init__ (self, capacity, fillValue = None):
  '''Capacity = static size of array. fillValue is placed at each element'''
      self._items = list()
      self._capacity = capacity
      self._logicalSize = 0
      self._fillValue = fillValue
      for count in range(capacity):
          self._items.append(fillValue)
  
  def __getitem__(self, index): return self._items[index]
  
  def __setitem__(self, index, newItem):      
      self._items[index] = newItem
  
  # ArraySortedBag Class
  #----------------------------------------------------
  class ArraySortedBag(object):
  '''An array-based bag implementation'''
  def __init__(self, sourceCollection = None):
      '''Sets the initial state of self, which includes the contents
      of sourceCollection, if it's present'''
      self._items = Array(10)
      self._size  = 0
      if sourceCollection:
          for item in sourceCollection:
              self.add(item)
  
  def __len__(self): return self._size
  
  def __iter__(self):
      cursor = 0
      while cursor &lt; len(self):
          yield self._items[cursor]
          cursor += 1
  
  def add(self, item):
      '''Adds item to self.'''        
      insertIndex = 0
  
      # First found the index where the item will be inserted at
      for i in range(self._size):
          if self._items[i] &gt; item:
              insertIndex = i
              break
      # Then, shift items down by one position until the insertIndex,
      for i in range (self._size, insertIndex, -1):
          self._items[i] = self._items[i-1]
  
      # Last, assign value to _items[insertIndex]
      self._items[insertIndex] = item
      self._size += 1
  
  # Test Driver
  #----------------------------------------------------
  if __name__ == "__main__":
  b1 = ArraySortedBag([2000, 2, 1000])
  print ("Display bag b1")
  for i in b1:              # &lt;------ Correct order, ascending order
      print (i)
  
  b2 = ArraySortedBag(b1)
  print ("\nDisplay bag b2")
  for i in b2:                 # &lt;----- Wrong order, descending order
      print (i)
  </code></pre>