CS153/hw6/oatprograms/msort.oat

69 lines
991 B
Text
Raw Normal View History

int program (int argc, string[] argv) {
var i = 0;
var a = new int[]{126,125,124,123,122,121,120,119,118,117};
print_string (string_of_array(a));
oat_mergesort(a,0,9);
print_string (" ");
print_string (string_of_array(a));
print_string (" ");
return i;
}
void oat_mergesort(int[] a, int low, int high)
{
var mid=0;
if(low<high)
{
mid=(low+high)>>1;
oat_mergesort(a,low,mid);
oat_mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
return;
}
void merge(int[] a, int low, int high, int mid)
{
var i=0;
var j=0;
var k=0;
var c=new int[50]{i1->0};
i=low;
j=mid+1;
k=low;
while((i<=mid)&(j<=high))
{
if(a[i]<a[j])
{
c[k]=a[i];
k=k+1;
i=i+1;
}
else
{
c[k]=a[j];
k=k+1;
j=j+1;
}
}
while(i<=mid)
{
c[k]=a[i];
k=k+1;
i=i+1;
}
while(j<=high)
{
c[k]=a[j];
k=k+1;
j=j+1;
}
i=low;
for(;i<k;i=i+1;)
{
a[i]=c[i];
}
return;
}