An algorithm to sort a stack using temporary stack.
We will implement a simple algorithm to sort a stack using another temporary stack in javascript. Everything will be written in ES6.
Example
Input: 5, 10 ,17, 11, 2, 23 Output: 23, 17, 11, 10, 5, 2
Implementation
- We will create a temporary stack.
- Then we will loop through while input stack is not empty.
- In each iteration if temporary stack is not empty and its top item is greater than input stack then we will swap them.
let sortStack = (stack) => {
//create a temporary stack
let tempStack = new Stack();
//loop while stack is not empty
while(!stack.isEmpty()){
// pop out the first element
let tmp = stack.pop();
// while temporary stack is not empty and
// top of stack is greater than temp
// change > to < for sorting in ascending order
while(!tempStack.isEmpty() && tempStack.peek() > tmp){
// pop from temporary stack and
// push it to the input stack
stack.push(tempStack.pop());
}
// push temp in tempory of stack
tempStack.push(tmp);
}
return tempStack;
}
Input:
let stack = new Stack();
stack.push(5);
stack.push(10);
stack.push(17);
stack.push(11);
stack.push(23);
stack.push(2);
let sorted = sortStack(stack);
while(!sorted.isEmpty()){
console.log(sorted.pop());
}
Output:
23
17
11
10
5
2
If you want to sort in ascending order then update to this while(!tempStack.isEmpty() && tempStack.peek() < tmp).
Time complexity: O(n).
Space complexity: O(n).