Profile image for Dominic Charley-Roy jokeofweek
This is a basic implementation of the Mergesort to sort arrays of integers.
Language
Java
Tags
algorithm array java merge sort
Favorited By
Profile image for shafiq ahamed Profile image for Hussain Aldurazi

Merge Sort

1 public class MergeSort { 2 3 public static int[] sort(int[] arr) 4 { 5 if (arr.length == 1) 6 return arr; 7 8 int middle = arr.length / 2; 9 int[] left = new int[middle]; 10 int[] right = new int[arr.length - middle]; 11 12 for (int i =0;i<middle;i++) 13 left[i]=arr[i]; 14 15 for (int i = 0; i < right.length;i++) 16 right[i]=arr[i+middle]; 17 18 left = sort(left); 19 right = sort(right); 20 21 if (left[left.length-1] > right[0]) 22 return merge(left,right); 23 else 24 return append(left,right); 25 } 26 27 public static int[] merge(int[] left, int[] right) 28 { 29 int[] result = new int[left.length + right.length]; 30 int lPtr=0; 31 int rPtr=0; 32 int resultPtr=0; 33 34 while (lPtr < left.length && rPtr < right.length) 35 { 36 if (left[lPtr] < right[rPtr]){ 37 result[resultPtr]=left[lPtr]; 38 lPtr++; 39 resultPtr++; 40 } else { 41 result[resultPtr]=right[rPtr]; 42 rPtr++; 43 resultPtr++; 44 } 45 } 46 47 if (lPtr == left.length) 48 { 49 while (rPtr != right.length) 50 result[resultPtr++]=right[rPtr++]; 51 } else { 52 while (lPtr != left.length) 53 result[resultPtr++]=left[lPtr++]; 54 } 55 56 return result; 57 } 58 59 public static int[] append(int[] left,int[] right) 60 { 61 int[] result = new int[left.length + right.length]; 62 for (int i = 0;i<left.length;i++) 63 result[i]=left[i]; 64 65 for (int i = 0;i<right.length;i++) 66 result[i+left.length]=right[i]; 67 68 return result; 69 } 70 }

Comments