A few recommendations for Data Structures and Algorithms:
Basic Sorting and Searching Algorithms for Arrays, at a glance
Heapsort uses the property of Heaps to sort an array. The Heap data structure is an array object that can be viewed as a complete and balanced binary tree. Min (Max)-Heap has a property that for every node other than the root, the value of the node is at least (at most) the value of its parent. Thus, the smallest (largest) element in a heap is stored at the root, and the subtrees rooted at a node contain larger (smaller) values than does the node itself.
It starts with building a heap by inserting the elements entered by the user, in its place.
1. Increase the size of the heap as a value is inserted.
2. Insert the entered value in the last place.
3. Compare the inserted value with its parent, until it satisfies the heap property and then
place it at its right position.
Now once the heap is built remove the elements from top to bottom, while maintaining the heap property to obtain the sorted list of entered values.
1. heap is the minimum element. So we remove heap. Size of the heap is decreased.
2. Now heap has to be filled. We put the last element in its place and see if it fits. If it does not fit, take minimum element among both its children and replaces parent with it.
3. Again see if the last element fits in that place.
Best case performance – when the input array is already sorted O(nlogn).
Worst case performance – when the input array is in reverse order O(nlogn).
Average case performance – O(nlogn)
It does not require any extra space for sorting, hence O(1) extra space.
It is not stable.
Related Tutorials :
Recommended books for learning Computer Science, learning high quality programming, and preparing for programming interviews:
These are the standard sources of the knowledge expected from candidates interviewing at Google, Microsoft, Facebook, Amazon and other startups and top-tier technology companies. The books by Cormen or Sedgewick (a standard part of the undergraduate curriculum) are sufficient for this part of the preparation. Google specially, loves to focus on algorithmic questions.
Tutorials on Sorting- at a glance