Pagini recente » Cod sursa (job #3125115) | Cod sursa (job #2716394) | Cod sursa (job #1981629) | Cod sursa (job #680807) | Cod sursa (job #1810121)
import java.util.*;
import java.io.File;
import java.io.PrintWriter;
public class MergeSort {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(new File("algsort.in"));
int nrOfElements = scanner.nextInt();
int[] array = new int[nrOfElements];
for(int i = 0 ; i< nrOfElements; i++) {
array[i] = scanner.nextInt();
}
mergeSort(array);
PrintWriter writer = new PrintWriter("algsort.out", "UTF-8");
for(int i = 0 ; i< array.length ;i++ ) {
writer.print(array[i] + " ");
}
writer.close();
}
public static void mergeSort(int[] inputArray) {
int size = inputArray.length;
if (size < 2)
return;
int mid = size / 2;
int leftSize = mid;
int rightSize = size - mid;
int[] left = new int[leftSize];
int[] right = new int[rightSize];
for (int i = 0; i < mid; i++) {
left[i] = inputArray[i];
}
for (int i = mid; i < size; i++) {
right[i - mid] = inputArray[i];
}
mergeSort(left);
mergeSort(right);
merge(left, right, inputArray);
}
public static void merge(int[] left, int[] right, int[] arr) {
int leftSize = left.length;
int rightSize = right.length;
int i = 0, j = 0, k = 0;
while (i < leftSize && j < rightSize) {
if (left[i] <= right[j]) {
arr[k] = left[i];
i++;
k++;
} else {
arr[k] = right[j];
k++;
j++;
}
}
while (i < leftSize) {
arr[k] = left[i];
k++;
i++;
}
while (j < leftSize) {
arr[k] = right[j];
k++;
j++;
}
}
}