#include <stdio.h>
#include <stdlib.h>
void
printf_array(int *array,int len)
{
}
{
}
void QSort(int *array,int low,int high)
{
}
void QuickSort(int *array,int len)
{
}
void Merge(int *src,int *des,int low,int mid,int high)
{
int i,j,k;
i = low;
j = mid+1;
k = low;
while( (i<=mid) && (j<=high) )
{
if(*(src+i) < *(src+j))
{
*(des+k) =*(src+i);
k++;
i++;
}
else
{
*(des+k) =*(src+j);
k++;
j++;
}
}
//比较之后剩下的复制到目的地
while( i<=mid)
{
*(des+k) =*(src+i);
i++;
k++;
}
while( j<=high)
{
*(des+k) =*(src+j);
j++;
k++;
}
}
void MSort(int *src,int *des,int low,int high,int max)
{
if(low == high)
{
*(des+low) = *(src+low);
}
else
{
int mid = (low+high) / 2;
//申请临时的空间
int *space = (int*) malloc(sizeof(int) * max);
if( space !=NULL)
{
//稳定的排序,不会有元素一下子跑前面去
MSort(src,space,low,mid,max);
MSort(src,space,mid+1,high,max);
Merge(space,des,low,mid,high);
}
free(space);
}
}
void MergeSort(int *array,int len)
{
//目的和源都是array
MSort(array,array,0,len-1,len);
}
int main(void )
{
}
<script type="text/javascript" id="wumiiRelatedItems"> </script>