Merge sort
Wed Nov 06 2024 18:39:40 GMT+0000 (Coordinated Universal Time)
Saved by
@signup_returns
//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
*/
content_copyCOPY
Comments