void mergeSort(int [] workspace , int lower, int upper)
{
if( lower==upper )
{
return ;
}
int mid=(lower+upper)/2;
mergeSort(workspace,lower,mid);
mergeSort(workspace,mid+1,upper);
int i=lower;
int j=mid+1;
int k=0;
while( i<=mid && j<=upper )
{
if( a[i]<a[j] )
workspace[k++]=a[i++];
else
workspace[k++]=a[j++];
}
while( i<=mid )
workspace[k++]=a[i++];
while( j<=upper )
workspace[k++]=a[j++];
for( i=0;i<k;i++ )
{
a[lower+i]=workspace[i];
}
}