# Algorithms: Question Set – 17

#### Explain what is Radix Sort algorithm

A comparison of the digits of the numbers is used by radix sort to put the elements in the correct order. It is one of the algorithms that can sort integers in a linear fashion.

#### Explain what is the difference between the best-case scenario and the worst-case scenario of an algorithm.

- The optimal data layout for an algorithm is referred to as the best-case scenario, and it is used to describe the situation in which the algorithm functions most effectively. For illustration’s sake, let’s use a binary search, for which the optimal result would be achieved if the target value was located smack dab in the middle of the data that was being searched. In the best-case scenario, the amount of temporal complexity would be O(1)
- The term “worst-case scenario” is used to refer to the most problematic possible combination of inputs for a particular algorithm. For example, quicksort has the potential to perform poorly if the largest or smallest element in a sublist is chosen as the pivot value. It will result in quicksort degenerating to O(n
^{2}).

#### Explain how to find whether the linked list has a loop?

We will use the two pointer strategy in order to determine whether or not the linked list contains a loop. If we keep two pointers and increase one of them after processing two nodes and the other after processing every node, we are likely to run into a situation in which both pointers will be pointing to the same node. This is because increasing one pointer occurs after processing two nodes and increasing the other pointer occurs after processing every node. If the linked list contains a loop, then this will always happen.

#### Explain what is Skip list?

Data structure using the skip list method, which enables an algorithm to search for, delete, and insert elements in a symbol table or dictionary. Each component of a skip list is denoted by a node in this kind of list. The content of the value that is associated with the key is what the search function brings back. The delete function will remove the supplied key from the database, whereas the insert operation will give that key a new value and associate it with it.

#### What is the function of a Pivot element?

- This is a more superficial exploration of the fundamentals of algorithm design. You can respond by explaining that a pivot element is an element selected from the array or matrix being worked on to serve as the first element selected by the algorithm to perform calculations. You can do this by saying that a pivot element is an element chosen from the array or matrix being worked on.
- There are a variety of approaches one can take when selecting a pivot element. When it comes to arrays, pivots can be the very first or very last element, they can be selected from the middle, or they can even be chosen at random. It is possible that different methods of selecting the pivot will produce superior results depending on the algorithm.

#### What are the key advantages of Insertion Sort, Quicksort, Heapsort and Mergesort? Discuss best, average, and worst case time and memory complexity.

- The worst runtime for insertion sort is O(n
^{2}), the average runtime is O(n^{2}), and the best runtime is O(n). - It has a space complexity of O(1) because it does not require any additional buffer. Because its complexity has a very low constant factor, it is effective at sorting exceedingly short arrays. This is one reason for its efficiency. Additionally, it is very effective in sorting arrays that are already “nearly” sorted out by themselves. Re-sorting arrays after making even minor changes to their individual items is a frequent application of this technique.
- The other three algorithms all have a runtime complexity of O(n log n), both at their best and at their average. Even in the worst situation, the complexity of Heapsort and Mergesort remains the same, whereas Quicksort has a worst-case performance of O(n
^{2}) - The data that is provided is taken into consideration by Quicksort. It takes O(n
^{2}) time to sort an array that has already been completely sorted if random pivots are not used. However, the process is made less sensitive to data that might otherwise cause the worst-case behaviour by exchanging random unsorted items with the initial element, and then sorting the elements thereafter (e.g. already sorted arrays). In spite of the fact that it does not have a lower complexity than Heapsort or Merge sort, it has a very low constant factor to its execution speed, which, in most cases, offers it a performance advantage when working with a large amount of random data. - Heapsort has a temporal complexity that can be relied upon and does not call for any additional buffer space. As a consequence of this, it is beneficial in software that demands consistent performance over ideal average runtime and/or has limited memory to operate with the data. In other words, it is useful in both situations. Therefore, this technique is best suited for use in environments where there are restrictions placed on memory and real-time needs.
- Merge sort offers a significantly lower constant factor compared to Heapsort, but it requires O(n) buffer space to hold intermediate data, which is a very expensive requirement. The fact that it is stable, in contrast to Heapsort, which is not, is the primary selling feature of this product. In addition to this, its implementation lends itself well to being parallelized.

#### How heapsort works?

- Comparing the elements in a heap using a sorting algorithm is what a heap sort is. The input is segmented into a region that is sorted and one that is not sorted. It makes a difference whether you’re working on a max-heap or a min-heap in terms of what gets moved to the sorted zone. In a max-heap, the element with the largest value is placed at the root, whereas in a min-heap, the one with the lowest value is placed there. When heap sort is applied to a max-heap, the size of the unsorted zone decreases because the item with the greatest size is moved to the sorted region. When using a min-heap, the item with the lowest weight is moved to the region that is being sorted.
- In a max-heap, the value of the parent node is invariably higher than the value of their offspring. The following procedures need to be carried out in order to sort the items of a max-heap using the heap sort algorithm:
- Rather than the final piece of the heap, use the root node as the replacement.
- Take out the very last component that was just added to the stack.
- Transform the current heap, which is a binary heap, into a max-heap.
- Continue carrying out the procedure until there are no more components.
- Time and its complications:
- Best Case: O (nlogn)
- Worst Case Scenario: O (nlogn)
- The Typical Example: O (nlogn)

#### What are Red-Black Trees and B-Trees? What is the best use case for each of them?

- Red-Black Trees and B-Trees are both examples of balanced search trees, and both of these tree types can be utilised on things that have the capability of having a comparison operator defined on them. They make it possible to perform operations such as minimum, maximum, predecessor, successor, insert, and delete in the time complexity of O(log N) (with N being the number of elements). As a result, you can use them to create a map, a priority queue, or the index of a database, to mention a few instances of this capability’s applicability.
- The performance of Binary Search Trees can be significantly enhanced by using Red-Black Trees instead. The listed actions are carried out by Binary Search Trees, which use binary trees, however the depth of the tree is not regulated, which means that the operations may wind up taking far more time than was anticipated. Red-Black Trees offer a solution to this problem by colouring all of the nodes in the tree either red or black and dictating the rules that should be followed while processing particular positions between nodes. This approach, without getting into too much detail, ensures that the longest branch isn’t more than twice as long as the shortest branch, which means that each branch is shorter than 2*log base2 in length (N).
- This structure is perfect for putting in place ordered maps and priority queues because of its organisation. In contrast to traditional binary trees, which typically only have two branches, B-Trees can have anywhere from two to K-2K branches depending on the value of K. Aside from that, their behaviour is strikingly analogous to that of a binary search tree. This has the benefit of lowering the number of access activities, which is especially helpful in situations in which data is kept on secondary storage or in a remote location. In this manner, we are able to request data in larger chunks, and by the time we have completed handling a request from the time before, our newest request is prepared to be processed. Since databases require a significant amount of access to secondary storage, this structure is frequently utilised during the implementation process.