Algorithms Implemented ====================== - **Bubble Sort**: A simple sorting algorithm that repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. - **Insertion Sort**: Builds the sorted array one item at a time by repeatedly taking the next element and inserting it into its correct position. - **Selection Sort**: Divides the input list into a sorted and an unsorted region, repeatedly selecting the smallest (or largest) element from the unsorted region and moving it to the sorted region. - **Quick Sort**: Uses a divide-and-conquer strategy, selecting a 'pivot' element and partitioning the array around it. - **Merge Sort**: Divides the array into halves, sorts them recursively, then merges the sorted halves. - **Heap Sort**: Builds a heap from the input data and then repeatedly extracts the maximum element from the heap and rebuilds it. - **Counting Sort**: Integer sorting algorithm that operates by counting the number of objects that possess distinct key values. - **Shell Sort**: Generalization of insertion sort that allows the exchange of items that are far apart. - **Radix Sort**: Sorts integers by processing individual digits, starting from the least significant digit.