allalgorithms-java icon indicating copy to clipboard operation
allalgorithms-java copied to clipboard

MergeSort

Open Harish0206 opened this issue 7 years ago • 0 comments

private int[] array;
private int[] tempMergArr;
private int length;

public static void main(String a[]){
     
    int[] inputArr = {45,23,11,89,77,98,4,28,65,43};
    MyMergeSort mms = new MyMergeSort();
    mms.sort(inputArr);
    for(int i:inputArr){
        System.out.print(i);
        System.out.print(" ");
    }
}

public void sort(int inputArr[]) { this.array = inputArr; this.length = inputArr.length; this.tempMergArr = new int[length]; doMergeSort(0, length - 1); }

private void doMergeSort(int lowerIndex, int higherIndex) {
     
    if (lowerIndex < higherIndex) {
        int middle = lowerIndex + (higherIndex - lowerIndex) / 2;
        // Below step sorts the left side of the array
        doMergeSort(lowerIndex, middle);
        // Below step sorts the right side of the array
        doMergeSort(middle + 1, higherIndex);
        // Now merge both sides
        mergeParts(lowerIndex, middle, higherIndex);
    }
}

private void mergeParts(int lowerIndex, int middle, int higherIndex) {

    for (int i = lowerIndex; i <= higherIndex; i++) {
        tempMergArr[i] = array[i];
    }
    int i = lowerIndex;
    int j = middle + 1;
    int k = lowerIndex;
    while (i <= middle && j <= higherIndex) {
        if (tempMergArr[i] <= tempMergArr[j]) {
            array[k] = tempMergArr[i];
            i++;
        } else {
            array[k] = tempMergArr[j];
            j++;
        }
        k++;
    }
    while (i <= middle) {
        array[k] = tempMergArr[i];
        k++;
        i++;
    }

}

}

Harish0206 avatar Oct 31 '18 13:10 Harish0206