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]