python - Add elements into a sorted array in ascending order -


i have following program implements sorted bag. adds elements in sorted order (ascending order) when giving list. when created new sorted bag argument of bag, it's not in sorted order (instead in descending order). see below

thanks help

# array class #---------------------------------------------------- class array(object):        # represents array. default_capacity = 5 def __init__ (self, capacity, fillvalue = none): '''capacity = static size of array. fillvalue placed @ each element'''     self._items = list()     self._capacity = capacity     self._logicalsize = 0     self._fillvalue = fillvalue     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 initial state of self, includes contents     of sourcecollection, if it's present'''     self._items = array(10)     self._size  = 0     if sourcecollection:         item in sourcecollection:             self.add(item)  def __len__(self): return self._size  def __iter__(self):     cursor = 0     while cursor < len(self):         yield self._items[cursor]         cursor += 1  def add(self, item):     '''adds item self.'''             insertindex = 0      # first found index item inserted @     in range(self._size):         if self._items[i] > item:             insertindex =             break     # then, shift items down 1 position until insertindex,     in range (self._size, insertindex, -1):         self._items[i] = self._items[i-1]      # last, assign value _items[insertindex]     self._items[insertindex] = item     self._size += 1  # test driver #---------------------------------------------------- if __name__ == "__main__": b1 = arraysortedbag([2000, 2, 1000]) print ("display bag b1") in b1:              # <------ correct order, ascending order     print (i)  b2 = arraysortedbag(b1) print ("\ndisplay bag b2") in b2:                 # <----- wrong order, descending order     print (i) 

in second instantiation of class arraysortedbag, passing sorted list. arraysortedbag.init() method adds items using add() method. when add() called item added never less existing list. therefore insertindex remains equal zero. therefore new item added beginning of list.

# first found index item inserted @ in range(self._size):     if self._items[i] > item:     # item never less self._items[i]         insertindex =         break 

Comments

Popular posts from this blog

How to run C# code using mono without Xamarin in Android? -

html - grunt SVG to webfont -

c# - SharpSsh Command Execution -