# Write an efficient non-recursive function to sort a stack of n elements

Question Write a program to sort a stack in ascending order. Assuming your merge sort works, it should be able to sort the left half of the array. More specifically, the code below would be an example of a preorder traversal of a filesystem.

The trick is to pick a midpoint near the center of the array, compare the data at that point with the data being searched and then responding to one of three possible conditions: Example implementation of binary search in C: The merge operation is tricky and I am not sure if we can have a better way to combine two stacks.

So if you have any idea, please let me know. Wrapper functions can be used to validate parameters so the recursive function can skip theseperform initialization allocate memory, initialize variablesparticularly for auxiliary variables such as "level of recursion" or partial computations for memoizationand handle exceptions and errors.

Linked list Below is a C definition of a linked list node structure. Instead of trying to trace the code from start to end, see if you can understand the concept abstractly. Implementation issues[ edit ] In actual implementation, rather than a pure recursive function single check for base case, otherwise recursive stepa number of modifications may be made, for purposes of clarity or efficiency.

Treat it as a black box that does what you need it to.

In languages that support nested functionsthe auxiliary function can be nested inside the wrapper function and use a shared scope. Traversing a filesystem is very similar to that of tree traversaltherefore the concepts behind tree traversal are applicable to traversing a filesystem.

The same strategy used to write an proof by induction is used to write a recursive function: The idea is to pull an item from the original stack and push it on the other stack. Like the node for linked lists, it is defined in terms of itself, recursively.

Notice especially how the node is defined in terms of itself. Show the claim is true for the base cases Assume it is true for inputs smaller than some n Use that assumption to show that it is still true for an input of size n Recursive function: Recursive data type An important application of recursion in computer science is in defining dynamic data structures such as lists and trees.

A Binary search tree is a special case of the binary tree where the data elements of each node are in order. As long as a programmer derives the template from a data definition, functions employ structural recursion.

The algorithm exhibits a logarithmic order of growth because it essentially divides the problem domain in half with each pass. Splits the array in half Sorts the left half Sorts the right half Merges the two halves together 1 should be fairly obvious and intuitive to you.This problem is mainly a variant of Reverse stack using recursion.

The idea of the solution is to hold all values in Function Call Stack until the stack becomes empty. When the stack becomes empty, insert all held items one by one in sorted order. Why is a stack used to perform recursion? Update Cancel. ad by A Cloud Guru.

A good exercise in coding is to write mere sort using only tail recursion. Try it! k Views · View Upvoters.

How are stacks used in a non-recursive function program?

Where is a nested stack used? Write a program to sort a stack in ascending order.

You should not make any assumptions about how the stack is implemented. The following are the only functions that should be used to write this program: push | pop | peek | isEmpty.

How to avoid stack overflow of a recursive function? Ask Question. If that is the case you have, you may want to consider converting your recursive function to a non-recursive one. – Vaughn Cato Jul 1 '13 at How to avoid stack overflow in. Most recursive functions can be easily rewritten as loops, as to wasting space - that depends on the function, since many (but not all) recursive algorithms actually depend on that kind of storage (although, the loop version is.

What is the smallest number of steps to move the stack? Function definition: when the input becomes small. An important example is merge sort, which is often implemented by switching to the non-recursive insertion sort when the data is sufficiently small, function recursive(n) if n==base return x base else return f(n, recursive(n

Write an efficient non-recursive function to sort a stack of n elements
Rated 5/5 based on 56 review