diff --git a/src/main/java/sortalgorithms/Sort.java b/src/main/java/sortalgorithms/Sort.java index 6cfc0c6..5d53d33 100644 --- a/src/main/java/sortalgorithms/Sort.java +++ b/src/main/java/sortalgorithms/Sort.java @@ -1,11 +1,61 @@ package sortalgorithms; +import java.util.Arrays; + public class Sort { private int[] inputArray; - + ////////////////////////////////////// + public static int[] mergeSort(int [ ] inputArray) + { + + int[] inputArray2 = inputArray.clone(); + + int[] temporaryArray = new int[inputArray2.length]; + mergeSort(inputArray2, temporaryArray, 0, inputArray2.length - 1); + return inputArray2; + } + + + private static void mergeSort(int [ ] inputAray, int [ ] temporaryArray, int leftIndex, int rightIndex) + { + if( leftIndex < rightIndex ) + { + int middle = (leftIndex + rightIndex) / 2; + mergeSort(inputAray, temporaryArray, leftIndex, middle); + mergeSort(inputAray, temporaryArray, middle + 1, rightIndex); + merge(inputAray, temporaryArray, leftIndex, middle + 1, rightIndex); + } + } + + + private static void merge(int[ ] inputArray, int[ ] temporaryArray, int leftIndex, int rightIndex, int endIndex ) + { + int leftEnd = rightIndex - 1; + int k = leftIndex; + int num = endIndex - leftIndex + 1; + + while(leftIndex <= leftEnd && rightIndex <= endIndex) + if(inputArray[leftIndex] < inputArray[rightIndex]) + temporaryArray[k++] = inputArray[leftIndex++]; + else + temporaryArray[k++] = inputArray[rightIndex++]; + + while(leftIndex <= leftEnd) + temporaryArray[k++] = inputArray[leftIndex++]; + + while(rightIndex <= endIndex) + temporaryArray[k++] = inputArray[rightIndex++]; + + for(int i = 0; i < num; i++, endIndex--) + inputArray[endIndex] = temporaryArray[endIndex]; + } + /////////////////////////////////////// + + + public int[] bubbleSort(int[] inputArray){ int size=inputArray.length-1;