import java.util.Scanner; public class AllSortingAlgorithms { //Selection Sort public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { int min = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[min]) { min = j; } } int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } //Bubble Sort public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } //Insertion Sort public static void insertionSort(int[] arr) { int n = arr.length; for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } //Merge Sort public static void merge(int[] arr, int l, int m, int r) { int n1 = m - l + 1; int n2 = r - m; int[] L = new int[n1]; int[] R = new int[n2]; for (int i = 0; i < n1; i++) { L[i] = arr[l + i]; } for (int j = 0; j < n2; j++) { R[j] = arr[m + 1 + j]; } int i = 0, j = 0; int k = l; while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } while (i < n1) { arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j]; j++; k++; } } public static void mergeSort(int[] arr, int l, int r) { if (l < r) { int m = (l + r) / 2; mergeSort(arr, l, m); mergeSort(arr, m + 1, r); merge(arr, l, m, r); } } //Quick Sort public static int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j = low; j < high; j++) { if (arr[j] < pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return i + 1; } public static void quickSort(int[] arr, int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } // Print Array public static void printArray(int[] arr) { int n = arr.length; for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); } System.out.println(); } // Main Method public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { System.out.println("Enter the number of test cases"); int t = sc.nextInt(); while (t > 0) { System.out.println("Enter the size of the array"); int n = sc.nextInt(); System.out.println("Enter the elements of the array"); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } System.out.println("Enter the sorting algorithm to be used"); System.out.println("1. Selection Sort"); System.out.println("2. Bubble Sort"); System.out.println("3. Insertion Sort"); System.out.println("4. Merge Sort"); System.out.println("5. Quick Sort"); int choice = sc.nextInt(); switch (choice) { case 1: selectionSort(arr); break; case 2: bubbleSort(arr); break; case 3: insertionSort(arr); break; case 4: mergeSort(arr, 0, n - 1); break; case 5: quickSort(arr, 0, n - 1); break; default: System.out.println("Invalid choice"); break; } System.out.println("The sorted array is"); printArray(arr); t--; } } } }