Heap sort is a comparison-based sorting algorithm and divides the input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region.

Insertion sort is a simple sorting algorithm that builds sorted array one item at a time. It is efficient for the small data set.

Quicksort is an efficient comparison sort algorithm. It can operate in place on the array, requiring small additional amounts of memory to perform sorting.

Merge sort is a divide and conquer and comparison-based sorting algorithm. It divide the array into subarray and conquer by recursively sorting two subarrays. It combines the results into the final array.

Bubble sort is a simple sorting algorithm. It compares each item from the array and swap with an adjacent item if they are not in order. The main advantage of bubble sort is an easy implementation. Bubble sort has poor performance and should be avoided in case of a large number of elements in the array.

grep command is used to search text or searches the given file for lines containing a match to the given strings or words.The grep search the string from given file and returns the number of occurrences and index for each string in the file. Write program to take file, search string and find the number of occurrences and list of index values from the given string.

Dictionary is an abstract data type composed of a collection of keys and values. The Dictionary does not take duplicate keys and must write to handle collisions that occur when two keys are mapped to same index.

Red Black tree is self-balanced binary search tree with color information. The Red-Black tree nodes can be either red or black. The color ensures tree balance. The root node and all leaves node set with black color. When inserting new item in the red-black tree, the tree balanced based on these properties. The search operation similar to the binary search tree.

A binary search tree is a binary tree (contains only two nodes). The left subtree node data value is less than or equal to parent node data value and right subtree node data value is greater than or equal to parent node data value.

Binomial coefficients are a family of positive integers that occur as coefficients in the binomial theorem. The binomial coefficients can be calculated recursively.