1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | public class MergSort { private int length; private int tempMerge[]; private int[] array; public static void main(String[] args) { MergSort obj = new MergSort(); int[] inpArr = { 3, 23, 43, 5, 55, 4 }; obj.sort(inpArr); for (int i : inpArr) { System.out.print(i + ","); } } public void sort(int[] inpArr) { this.length = inpArr.length; this.array=inpArr; this.tempMerge= new int[length]; doMergeSort(0, length - 1) { } private void doMergeSort(int low, int high) { if (low < high) { int mid = ((low + high) / 2); doMergeSort(low, mid); doMergeSort(mid + 1, high);// divide 1st half mergeParts(low, mid, high);// divide 2nd half } } private void mergeParts(int low, int mid, int high) { for (int nn = low; nn <= high; nn++) { tempMerge[nn] = array[nn]; } int i = low; int j = mid + 1; int k = low; while (i <= mid && j <= high) { if (tempMerge[i] <= tempMerge[j]) { array[k] = tempMerge[i]; i++; } else { array[k] = tempMerge[j]; j++; } k++; } while (i <= mid) { array[k] = tempMerge[i]; k++; i++; } } } |
Mergesort Algorithm
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment