Given an Integer Stack in Java, sort the stack in increasing order (Ascending Order)
Examples:
Input : Stack: [10, 2, 16, 5, 9, 1] Peek: 1 Output : Stack: [1, 2, 5, 9, 10, 16] Peek: 16
Recommended: Design and Implement Special Stack Data Structure
Approach:
The idea is, pop every element from the original stack and compares it with the temporary stack.
If the popped element from the original stack is less than peek element of the temporary stack, then push the temp stack element to the original stack, call this recursively, until temp is not empty and then push the element at the right place.
Else push the element to the temp stack if the original stack element popped is greater than the temp stack.
Implementation in Java:
// Java Program to sort an Integer Stack import java.util.Stack; public class SortStack { // Method which returns a sorted stack static Stack<Integer> sortStack(Stack<Integer> stack) { // Create another temporary stack Stack<Integer> tempStack = new Stack<Integer>(); // Iterate until the original stack is empty while (!stack.isEmpty()) { // Popped element from the original stack int s = stack.pop(); // Check for the specified condition while (!tempStack.isEmpty() && (tempStack.peek() > s)) stack.push(tempStack.pop()); // Pushed in the temp stack tempStack.push(s); } // Return the stack return tempStack; } // Driver Code public static void main(String[] args) { // Declare the Stack and Initialize the elements in it Stack<Integer> stack = new Stack<Integer>(); stack.push(10); stack.push(2); stack.push(16); stack.push(5); stack.push(9); stack.push(1); // Print before sorting System.out.println(stack + " Peek: " + stack.peek()); // Sort the stack stack = sortStack(stack); // Print after sorting System.out.println(stack + " Peek: " + stack.peek()); } }
Output:
[10, 2, 16, 5, 9, 1] Peek: 1 [1, 2, 5, 9, 10, 16] Peek: 16
Time Complexity: O(n^2)
Space Complexity: O(n)
Please write comments below if you find anything incorrect, or you want to share more information about the topic discussed above. A gentle request to share this topic on your social media profile.