# Data Structures: Question Set – 15

#### How does Quick Sort handle duplicate elements?

Quick Sort handles duplicate elements by including them in either the left or right sub-array, depending on their value relative to the pivot.

#### Can Quick Sort be implemented recursively or iteratively?

Quick Sort can be implemented recursively, where the partitioning process is repeated on the sub-arrays until the entire array is sorted. It can also be implemented iteratively using a stack or queue to store the sub-arrays.

#### What are the advantages of Quick Sort over other sorting algorithms?

Quick Sort has several advantages over other sorting algorithms, such as:

It is faster than many other sorting algorithms, such as merge sort and heap sort, in the average case.

It requires very little additional memory, as it sorts the array in place. It is easy to implement and can be easily parallelized for faster performance on multi-core CPUs.

#### What are the disadvantages of Quick Sort?

Quick Sort has several disadvantages, such as:

It has a worst-case time complexity of O(n^2) when the pivot element is poorly chosen.

It is not stable, meaning that the order of equal elements may not be preserved. It can be slow when sorting small arrays or arrays with many duplicates, as the partitioning process may not be efficient in these cases.

#### What is Heap Sort?

Heap Sort is a popular sorting algorithm that works by building a binary heap from the array or list to be sorted, and then repeatedly extracting the root node of the heap, which is the maximum or minimum value, depending on whether the heap is a max-heap or min-heap. The extracted root node is then placed at the end of the sorted portion of the array or list, until the entire array is sorted.

#### What is a Heap?

A Heap is a specialized tree-based data structure that satisfies the heap property, which states that for every node i in the tree, the value of the node is greater than or equal to the value of its parent node (in a max-heap) or less than or equal to the value of its parent node (in a min-heap). In a binary heap, each node has at most two children.

#### What is the time complexity of Heap Sort?

The time complexity of Heap Sort is O(nlogn) in the worst case, which occurs when the array or list is already sorted in reverse order. In the average case, the time complexity is also O(nlogn).

#### How does Heap Sort build a heap?

Heap Sort builds a heap by starting with the last non-leaf node of the binary tree, which is the parent of the last leaf node. It then compares the parent node with its two children nodes, and swaps the parent with the child that has the larger (or smaller) value, depending on whether it is a max-heap or min-heap. This process is repeated recursively on each sub-tree until the entire tree is a heap.

#### What is the difference between a max-heap and a min-heap?

In a max-heap, the value of each node is greater than or equal to the value of its parent node, and the root node has the maximum value in the heap. In a min-heap, the value of each node is less than or equal to the value of its parent node, and the root node has the minimum value in the heap.

#### How does Heap Sort extract the root node of the heap?

Heap Sort extracts the root node of the heap by swapping it with the last leaf node of the tree, and then removing the last leaf node from the heap. It then restores the heap property by comparing the new root node with its children nodes, and swapping it with the child that has the larger (or smaller) value, depending on whether it is a max-heap or min-heap. This process is repeated until the entire heap is a valid heap.