#include <stdio.h>
#include <string.h>
void print_array(int* arr,int);
void mSort(int* arr,int* b,int first,int last,int length);
void mergeSort(int* arr,int length);
int main()
{
int arr[10]={3,2,1,4,6,5,8,7,9,0};
int b[10]={0};
mergeSort(arr,sizeof arr/4);
print_array(arr,sizeof arr/4);
return 0;
}
void mergeSort(int*arr,int length)
{
int b[10]={0};
mSort(arr,b,0,10,length);
}
void mSort(int* arr,int* b,int first,int last,int length)
{
if(first+1<last)
{
int mid=(first+last)/2;
mSort(arr,b,first,mid,length);
mSort(arr,b,mid,last,length);
if(arr[mid-1]<arr[mid])
return;
int indexA=first;
int indexB=mid;
int indexC=first;
while(indexA<mid&&indexB<last)
{
if(arr[indexA]<arr[indexB])
{
b[indexC]=arr[indexA];
indexA++;
}
else
{
b[indexC]=arr[indexB];
indexB++;
}
indexC++;
}
while(indexB<last)
{
b[indexC]=arr[indexB];
indexB++;
indexC++;
}
while(indexA<mid)
{
b[indexC]=arr[indexA];
indexA++;
indexC++;
}
for(int k=first;k<last;k++)
{
arr[k]=b[k];
}
}
}
void print_array(int* arr,int length)
{
int i;
for(i=0;i<length;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
归并排序
最新推荐文章于 2023-12-11 10:45:47 发布