See More

import java.util.Random; class MergeSort { public static void main(String[] args) { final int LENGTH = 100; Random rand = new Random(); int[] iarr = new int[LENGTH]; int i; System.out.println("Initial array:"); for( i=0; i1) { middle = start + length/2 - 1; mergesort(data, start, middle); mergesort(data, middle+1, end); merge(data, start, middle, middle+1, end); } } private static void merge(int[] data, int start1, int end1, int start2, int end2) { int length1 = end1 - start1 + 1; int length2 = end2 - start2 + 1; int[] temp = new int[length1+length2]; int copied = 0; int flag1 = start1; int flag2 = start2; int i; while( (flag1<=end1) && (flag2<=end2) ) { if( data[flag1]