Python Quicksort Runtime Error: Maximum Recursion Depth Exceeded in cmp

You have simply hit the recursion limits. Your list of names is too large for Python’s limited recursion capabilities. Your Quicksort works just fine otherwise. You could raise the recursion limit by setting the limit higher with sys.setrecursionlimit(). You can set it a fair amount higher, but you do so at your own risk. A better option is … Read more

Quicksort vs heapsort

This paper has some analysis. Also, from Wikipedia: The most direct competitor of quicksort is heapsort. Heapsort is typically somewhat slower than quicksort, but the worst-case running time is always Θ(nlogn). Quicksort is usually faster, though there remains the chance of worst case performance except in the introsort variant, which switches to heapsort when a bad … Read more

Is Quicksort in-place or not?

Intro to Algorithms from MIT Press qualifies QuickSort as in-place – it sorts the elements within the array with at most a constant amount of them outside the array at any given time. At the end of the day, people will always have differing opinions (is Top-Down Memoization considered Dynamic Programming? Not to some “classical” folks), side with who you … Read more

how to implement quick sort algorithm in C++

Your consideration is wrong. The value of r does not change, since it is given as value to the Quicksort function(not a reference). You handle the ranges with p,q such that p is the first index in the range and q the first index not in the range. Thus, your calls were wrong: Here is the complete example. I used std::swap to change elements and ans std::vector … Read more