Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.codecool.mergesort;
- public class MergeSortSecond {
- public static void main(String[] args) {
- int[] testArray = {2,6,1,20,52,32,8};
- printArray(mergeSort(testArray));
- }
- private static void printArray(int[] array) {
- for (int i: array) {
- System.out.println(i);
- }
- }
- private static int[] mergeSort(int[] arrayToSort) {
- if (arrayToSort.length <= 1) {
- return arrayToSort;
- }
- int midPointer = arrayToSort.length / 2;
- int[] left = new int[midPointer];
- int[] right = new int[arrayToSort.length - midPointer];
- for (int i = 0; i < midPointer; i ++) {
- left[i] = arrayToSort[i];
- }
- for (int j = 0; j < right.length; j ++) {
- right[j] = arrayToSort[midPointer + j];
- }
- int[] result;
- left = mergeSort(left);
- right = mergeSort(right);
- result = merge(left, right);
- return result;
- }
- private static int[] merge(int[] left, int[] right) {
- int[] result = new int[left.length + right.length];
- int leftPointer = 0;
- int rightPointer = 0;
- int resultPointer = 0;
- while (leftPointer < left.length || rightPointer < right.length) {
- if (leftPointer < left.length && rightPointer < right.length) {
- if (left[leftPointer] < right[rightPointer]) {
- result[resultPointer++] = left[leftPointer++];
- } else {
- result[resultPointer++] = right[rightPointer++];
- }
- } else if (leftPointer < left.length) {
- result[resultPointer++] = left[leftPointer++];
- } else if (rightPointer < right.length) {
- result[resultPointer++] = right[rightPointer++];
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement