def sortStack(stack): if stack.isEmpty(): return 'Stack is empty' less = Stack() middle = Stack() greater = Stack() return sortStackHelper(stack, less, middle, greater)
def __init__(self, N): self.solutionSize = N self.first = Stack() self.second = Stack() self.third = Stack() for i in range(N, 0, -1): self.first.push(i)
def push(self, data): lengthOfSet = len(self.stacks) indexOfUnfilledStack = None for i in range(0, lengthOfSet): if self.stacks[i].stackSize() < self.capacity: indexOfUnfilledStack = i break if indexOfUnfilledStack != None: self.stacks[indexOfUnfilledStack].push(data) else: self.stacks.append(Stack()) self.stacks[lengthOfSet].push(data)
def sortStackHelper(stack, less, middle, greater): if stack.isEmpty(): return Stack() middle.push(stack.pop()) if stack.isEmpty(): return middle while not stack.isEmpty(): data = stack.pop() if data >= middle.peek(): greater.push(data) else: less.push(data) leftHand = sortStackHelper(less, Stack(), Stack(), Stack()) rightHand = sortStackHelper(greater, Stack(), Stack(), Stack()) leftHand.push(middle.pop()) while not rightHand.isEmpty(): middle.push(rightHand.pop()) while not middle.isEmpty(): leftHand.push(middle.pop()) return leftHand
def __init__(self): self.stack = Stack() self.helpderStack = Stack()