Output:
Click Here For Java Online Compiler
Solution:
*** Merge Sort *** --- Array Before --- 45, 23, 11, 89, 77, 9, --- Array After --- 9, 11, 23, 45, 77, 89,
Click Here For Java Online Compiler
Solution:
/** * * source code by: * http://www.java2novice.com */ public class MergeSort { private int[] array; private int[] tempMergArr; private int length; public static void main(String a[]) { int[] inputArr = {45, 23, 11, 89, 77, 9}; System.out.println("*** Merge Sort ***" + "\n"); System.out.println("--- Array Before ---"); for (int i : inputArr) { System.out.print(i + ", "); } MergeSort mms = new MergeSort(); mms.sort(inputArr); System.out.println("\n"); System.out.println("--- Array After ---"); 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++; } } }
comment 0 comments:
more_vertsentiment_satisfied Emoticon