//Merge sort import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] array = new int[N]; int[] tempArray = new int[N]; for (int i = 0; i < N; i++) array[i] = sc.nextInt(); mergeSort(array, tempArray, 0, N - 1); System.out.println("Sorted Elements: "); for (int i = 0; i < N; i++) { System.out.print(array[i] + " "); } System.out.println(); } public static void mergeSort(int[] array, int[] tempArray, int low, int high) { if (low < high) { int mid = low + (high - low) / 2; mergeSort(array, tempArray, low, mid); mergeSort(array, tempArray, mid + 1, high); merge(array, tempArray, low, high, mid); } } public static void merge(int[] array, int tempArray[], int low, int high, int mid) { int left = low; int right = mid + 1; int current = low; while (left <= mid && right <= high) { if (array[left] <= array[right]) { tempArray[current++] = array[left++]; } else { tempArray[current++] = array[right++]; } } while (left <= mid) { tempArray[current++] = array[left++]; } while (right <= high) { tempArray[current++] = array[right++]; } for (int i = low; i <= high; i++) { array[i] = tempArray[i]; } } } /* Sample Test Case: Input: 6 38 27 43 3 9 82 Output: Sorted Elements: 3 9 27 38 43 82 */