Mergesort Algorithm


 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++;
  }
 }

}
Output: 3,4,5,23,43,55

No comments:

Post a Comment