docs: add heap sort (#471)

Co-authored-by: Ming Tsai <37890026+ming-tsai@users.noreply.github.com>
pull/472/head
Goncalo Nascimento 2021-09-21 02:44:44 +01:00 committed by GitHub
parent b330bdb75d
commit 071b7c7f2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 0 deletions

View File

@ -6,6 +6,7 @@
- [Merge Sort](./Sorting/Merge-Sort.md)
- [Selection Sort](./Sorting/Selection-Sort.md)
- [Insertion Sort](./Sorting/Insertion-Sort.md)
- [Heap Sort](./Sorting/Heap-Sort.md)
## Strings

View File

@ -0,0 +1,54 @@
# Heap Sort
1. **Time Complexity:** O(log(n)) due to heapify(logn) and CreateandBuildHeap is O(n).
2. **Space Complexity:** O(1).
3. **Applications:** Finding the order in statistics, dealing with priority queues in Prim's algorithm and Huffman encoding or data compression.
4. **Founder's Name:** John William Joseph Williams
## Steps
1. Create and build a max heap.
2. Remove the root element and put at the end of the list. Put the last item of the tree at the vacant place.
3. Reduce the size of the heap by 1.
4. Heapify the root element again so that we have the highest element at root.
5. Repeat this process until all the elements are sorted.
## Example
**Given array : [4, 10, 3, 5, 1]**
**1. Create a heap:** [4, 10, 3, 5, 1]
**2. Build a max heap:** [10, 5, 3, 4, 1]
**3. Remove the node:** [1, 5, 3, 4, 10]
**4. Build a max heap:** [5, 4, 3, 1, 10]
**5. Remove the node:** [1, 4, 3, 5, 10]
**6. Build a max heap:** [4, 1, 3, 5, 10]
**7. Remove the node:** [3, 1, 4, 5, 10]
**8. Already max heap:** [3, 1, 4, 5, 10]
**9. Remove the node:** [1, 3, 4, 5, 10]
**10. Sorted Array:** [1, 3, 4, 5, 10]
## Implementation
- [Java](../../../algorithms/Java/sorting/heap-sort.java)
- [C](../../../algorithms/C/sorting/heap-sort.c)
- [C++](../../../algorithms/CPlusPlus/Sorting/heap-sort.cpp)
- [Python](../../../algorithms/Python/sorting/heap-sort.py)
## Video URL
[Youtube Video about Heap Sort](https://www.youtube.com/watch?v=MtQL_ll5KhQ&ab_channel=GeeksforGeeks)
## Others
[Wikipedia](https://en.wikipedia.org/wiki/Heapsort)